- PR -

Enum 型プロパティ作成時の命名について

投稿者投稿内容
武史
ベテラン
会議室デビュー日: 2007/09/21
投稿数: 71
投稿日時: 2008-02-08 09:16
Enum 型のプロパティで、いつも悩んでしまいます。

例えば、男と女を格納するプロパティを作ると、
下のコードのようになります。

Public Enum 性別 As Integer
 男 = 1
 女 = 2
End Num

Public Property 性別 As 性別
 (略)
End Property


ここで、型の名前と、プロパティの名前がかぶってしまうので、
どうにも気持ちが悪いのでどちらかの名前を無理やり変えています。

みなさんは、こういう Enum 型の型名と、プロパティの名前をどのように
していますか?
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-02-08 09:36
引用:

武史さんの書き込み (2008-02-08 09:16) より:
ここで、型の名前と、プロパティの名前がかぶってしまうので、
どうにも気持ちが悪いのでどちらかの名前を無理やり変えています。

みなさんは、こういう Enum 型の型名と、プロパティの名前をどのように
していますか?



.NET Framework1.0(VS.NET2002)の頃にMicrosoftの「名前付けのガイドライン」(クラスライブラリ開発向けとありますが、通常のアプリケーション開発向けにも十分参考になります。)を読みましたが、型名とプロパティ名が意味的に同名になるのが素直な命名と考えられるようなパターンでは、そのまま同名を使うことが推奨されていたかと思います。

最新の名前付けガイドラインは確認していません。
「名前付けのガイドライン」または「名前に関するガイドライン」をGoogleで検索すれば1次資料に辿り着けます。

<追記>
検索キーワードに「名前付けのガイドライン」を追加しました。
(msdn2ではなくmsdnにリンクされるこちらの検索結果は資料が古いですが、
たぶん全部和訳されています。)
</追記>


[ メッセージ編集済み 編集者: よねKEN 編集日時 2008-02-08 14:45 ]
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-02-08 09:38
そのプロパティに型名以上の意味があればそれを付け加えますが
そうじゃない場合、型名と同じプロパティ名にしています。

.Netのクラスライブラリもそうなっている場合が多いので問題ないと思いますよ。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2008-02-08 09:39
あー、確かにありますねそういうこと。
そのプロパティを持つクラスの外からは名前が同じでも何も問題はないと思いますので、問題はそのクラスのメンバを書くときですよね。
そのクラス内で「性別」と書くとプロパティを指すことになる(多分)と思いますので、列挙型を使っている部分では名前空間を指定するようにするのがいいかもしれませんね。
適当な名前が見つかればいいですけど、プロパティや列挙型の名前をむりやり変なのに変えるよりは名前空間を指定した方が。
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-02-08 10:26
私はEnumには〜Typeを付けます。
意味的にもEnumは性別種、プロパティは性別で違和感もあまりないので。

VBではEnumとプロパティを同名にするとエラーになりますよね?

Public Enum 性別Type As Integer
 男 = 1
 女 = 2
End Num

Public Property 性別 As 性別Type
 (略)
End Property
武史
ベテラン
会議室デビュー日: 2007/09/21
投稿数: 71
投稿日時: 2008-02-08 12:33
みなさん、ありがとうございます。

VB は、同じ名前ダメだったんですね。
そもそも試してなかったです。

Type って付けるのもいいかもしれません。

参考にあげていただいたサイトなんかも
見てみます。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-02-08 12:51
引用:

未記入さんの書き込み (2008-02-08 10:26) より:

VBではEnumとプロパティを同名にするとエラーになりますよね?



性別とかだったらたぶん同じにしそう。

カッコをつければできなかったっけ?
今VBがないので試せないけれど

コード:
Public Property [性別] As 性別
End Property


_________________
かるあ のメモスニペット
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2008-02-08 12:55
引用:

未記入さんの書き込み (2008-02-08 10:26) より:
VBではEnumとプロパティを同名にするとエラーになりますよね?



そういうことはないはずですが、
どんなソースコードを書いた場合でしょうか?

コード:

Public Enum 性別 As Integer
男 = 1
女 = 2
End Enum

Public Class A
Private m_性別 As 性別
Public Property 性別 As 性別
Get
Return m_性別
End Get
Set(ByVal Value As 性別)
m_性別 = Value
End Set
End Property

Public Shared Sub Main()
End Sub
End Class



上記コードをVB9.0のコンパイラでコンパイルした限りでは問題ありません。

引用:

かるあさんの書き込み (2008-02-08 12:51) より:
カッコをつければできなかったっけ?
今VBがないので試せないけれど

コード:

Public Property [性別] As 性別
End Property






[]は予約語を識別子として使用するためのエスケープ方法ですね。


[ メッセージ編集済み 編集者: よねKEN 編集日時 2008-02-08 12:57 ]

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