- PR -

me について

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 14:58
突っ込まれる前に補足。

コード:

    Public Sub New(ByVal code As Integer)
        Me.Code = code
    End Sub


に関しては、VB が大文字小文字の区別を付けない言語ということもあって、
IDE の設定によっては勝手にフォーマットされちゃうので、お勧めできないですね。

C# などでは良く見かけるのですが、先頭が大文字/小文字という区別は見にくいという意見があります。
昨今の IDE だとインテリセンス (Ctrl + Space) の時にも煩わしいので、私は名前を変えちゃいますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2006-02-14 15:19
引用:
次のような事があるからメンバ変数は何かつけますね。上記は非常に分かりづらいバグにです。


なにがメリットなのか良くわかりませんでした。Visual Studio 2005 だと何か警告してくれるのでしょうか?

コード:
class Class1
{
	private string prefixIsFloccinaucinihilipilification;
	
	public Class1( string prifixIsFloccinaucinihilipilification )
	{
		this.prefixIsFloccinaucinihilipilification = prefixIsFloccinaucinihilipilification
	}
}



コード:
class Class1
{
	private string _prefixIsFloccinaucinihilipilification;
	
	public Class1( string prifixIsFloccinaucinihilipilification )
	{
		_prefixIsFloccinaucinihilipilification = _prefixIsFloccinaucinihilipilification
	}
}



コード:
class Class1
{
	private string _prefixIsFloccinaucinihilipilification;
	
	public Class1( string prifixIsFloccinaucinihilipilification )
	{
		prifixIsFloccinaucinihilipilification = prifixIsFloccinaucinihilipilification
	}
}



いずれも期待した動作をしてくれません。Visual Studio .NET 2003 では何も言ってくれなかったので、どのような書き方をしてもバグが混入する可能性はあるように思います。ちなみに、Eclipse で上記 3パターンのコードを Java で書いたら、すべてのケースで正しく代入が行われないことを警告してくれました。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-02-14 15:21
今インストール中で試せないし思い出せないのですが、
コード:
Public Class ClassBase
    Public Overridable Property Prop1() As String
        Get
            Return "Base"
        End Get
    End Property
    Public Sub Test()
        MessageBox.Show(Prop1())
        MessageBox.Show(Me.Prop1())
    End Sub
End Class
Public Class MyClass
    Inherits ClassBase
    Public Overrides Property Prop1() As String
        Get
            Return "MyClass"
        End Get
    End Property
End Class

Dim NewClass As ClassBase
NewClass = New MyClass
NewClass.Text()


の結果、
"Base"
"MyClass"
となりませんでしたっけ?
明示化だけだったかな?とふと思ったので。
#確認したかっただけですm(_ _)m
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 15:28
引用:

まどかさんの書き込み (2006-02-14 15:21) より:

の結果、"Base" "MyClass" となりませんでしたっけ?


このあたりは、MeMyClass というキーワードで動作固定できますね。

# と、このように MyClass は予約語なので使えませんw (^^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-14 15:35
コード:
なにがメリットなのか良くわかりませんでした。Visual Studio 2005 だと何か警告してくれるのでしょうか? 


どうでしょう。IDEの事ではなく、人間が気付きやすくなるだけです。


コード:
class Class1
{
	private string _prefixIsFloccinaucinihilipilification;
	
	public Class1( string prifixIsFloccinaucinihilipilification )
	{
		_prefixIsFloccinaucinihilipilification = prifixIsFloccinaucinihilipilification
	}
}


(↑は正しい動作)
メンバフィールドに特別なプレフィックスをつけて置くと、メンバフィールドをメンバフィールドに代入するようなミスが減るだろうという事です。


メンバフィールドにプレフィックスをつけておかないと、
コード:
class Class1
{
	private string prefixIsFloccinaucinihilipilification;
	
	public Class1( string prifixIsFloccinaucinihilipilification )
	{
		this.prefixIsFloccinaucinihilipilification = prefixIsFloccinaucinihilipilification
	}
}


(↑バグだが気付きにくい)
このように単純なタイプミスで自分自身に自分を代入してしまい、気付きにくいという事です。


コード:
class Class1
{
	private string _prefixIsFloccinaucinihilipilification;
	
	public Class1( string prifixIsFloccinaucinihilipilification )
	{
		_prefixIsFloccinaucinihilipilification = _prefixIsFloccinaucinihilipilification
	}
}


(↑バグだがすぐ気付く)
こうなっているとさすがに間違いに気付くかと。

_________________
囚人のジレンマな日々
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-02-14 15:42
引用:

このあたりは、MeMyClass というキーワードで動作固定できますね。


ということは結果は先の通りでよかったですかね?
.NETの本を初めて読んだときに、Meは付けたときと付けないときで挙動が違うんだという
印象が残っています。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 15:44
引用:

囚人さんの書き込み (2006-02-14 15:35) より:


prefix と prifix のような名前が微妙に違う時ってことでしょうか?
で「プレフィクス」というのはこの場合は「アンダースコア」ってことですよね。

一瞬、prefix の部分が「プレフィクス」のことだと思ってメダパニってました。
型のプレフィクス (ハンガリー記法) の話も出ていたので、Is (bool) についても深読みしちゃいました。
型が string だったので気付けましたが。

名前自体を明確に分けるという意味であれば賛成ですが、ちょっと例が悪かったのかな?
この場合「newIsFloccinaucinihilipilification」というような例の方が良かったかも。

そゆことじゃない? (^-^;)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-14 15:48
コード:
ということは結果は先の通りでよかったですかね? 
.NETの本を初めて読んだときに、Meは付けたときと付けないときで挙動が違うんだという 
印象が残っています。 


多分
"MyClass"
"MyClass"
だと思います。(私はVBに疎い人間^^
_________________
囚人のジレンマな日々

スキルアップ/キャリアアップ(JOB@IT)