- PR -

変数名に変数の型のプレフィックスを付けることに関しての質問および投票です

投票結果総投票数:128
賛成 23 17.97%
反対 84 65.62%
機能限定なら賛成 17 13.28%
その他 4 3.12%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2008-02-08 12:37
変数名に変数の型のプレフィックスを付けることに関しての質問および投票です。
例)
Integer型→iHoge
String型→sHoge

.Netになりプレフィックスを付ける事は推奨されなくなりましたが、
プレフィックスを付けることを規約により強制されることも多々あります。
皆様は変数名に変数の型のプレフィックスを付けることに関し、どのように考えていますか?
※変数はローカル変数、インスタンス変数、クラス変数、パラメータ等全て含みます。


賛成意見
一目で変数の型がわかるのでコードが理解しやすい。

反対意見
型変更する際に面倒。
プレフィックスを使うメリットがない。
たくさんあるクラスのプレフィックスを決めることは出来ない。

機能限定意見
値型の変数とよく使うクラスなどはプレフィックスを使う。


投票およびメリット、デメリットなども記載していただけると嬉しいです。
よろしくお願いいたします。


間違って投票が1つしかないものを送信してしまいました。
かるあ様が投票していただいているのに気が付かず削除してしまいました。
申し訳ありません。

[ メッセージ編集済み 編集者: 未記入 編集日時 2008-02-08 12:40 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-02-08 12:41
型に依存したプレフィックスは特にいらないと思う。
意味に依存したプレフィックスは必要だと思う。

Joel on Software
http://local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B

Wikipedia ハンガリアン記法
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95

#投票なのに一個しかない。。。
#デブサミ行きたい

_________________
かるあ のメモスニペット

[ メッセージ編集済み 編集者: かるあ 編集日時 2008-02-08 12:42 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-02-08 12:44
引用:

未記入さんの書き込み (2008-02-08 12:37) より:
.Netになりプレフィックスを付ける事は推奨されなくなりましたが、
プレフィックスを付けることを規約により強制されることも多々あります。
皆様は変数名に変数の型のプレフィックスを付けることに関し、どのように考えていますか?


古い、安定した話題なので、ちなみにキーワードは「ハンガリアン」だと思いますので、過去の記事やネットでの検索でもある程度の情報は得られるかもしれません。
最近は、やはり付けないのがはやりだと思いますが、基本型以外にいわゆるクラスの名前にまで話を広げると、ちょっと迷います。
たとえば、Hoge というクラスが合った場合、
コード:
Hoge hoge = new Hoge();



コード:
Hoge hogeBuy = new Hoge(true);
Hoge hogeSell = new Hoge(false);


のようなことをしたくなります。
プレフィックスというよりは、クラスの名前をそのままインスタンスの名前に含める、という感じです。
ただ、これも本当はしないほうが良いのかもしれないかな、と思います。要は IDE が賢くなればそれで済むことですから。
ハンガリアン記法みたいに、一律に強制、みたいなのは堅苦しくて、とても耐えられないとは思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-02-08 14:02
ローカル変数のプリフィクスについてはもう見慣れたので、どっちでも良いと思うようになりました。

ハンガリー記法 (ハンガリアン記法) は、そもそも構造化ができていて、かつ似て非なる型が多くある言語 (C++、SDK、MFC) 以外では必要ないと考えます。 でもあっても別に困らないのでどちらでも良いです。 変数名を直すのが手間という問題についてですが、型の変更がしばしばあることは私の経験では少ないですし、今の IDE なら簡単に一括置換できます。

それよりもそこ以外の命名の方が大切ですね。 '何' をするものかが書いていない変数の方が万人に害です。(メソッド名と重複する呼称は省略しても構わない = GetxxxMoney メソッドに value という変数名があっても問題ない)

メソッドの切り分け単位を大切にすれば、おのずの命名は自明です。 特にローカル変数は、メソッドが小さいほどすぐ読めるので型が書いてあってもなくても何でも良いと思います。 そういう意味では変数名よりメソッド名の方が大切だと思います。 なので、メソッドに妙なプリフィクス (g<lobal> とか f<unc> とか s<ub> とか) を付ける人は許しません。 先頭は動詞にして欲しいですね。

ローカル変数以外の広域な変数はガイドラインに従って欲しいですね。 その方がハッピーになれます。 私の経験上では Java 屋さんは結構まとまっているような気がしますが、Microsoft.NET 系の言語屋さんは 「ガイドライン」 が公式にあるのにも関わらず独自ルールがあることが多く困っています。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2008-02-08 22:31
VC6.0を使ってたころはハンガリアン記法で書いていましたが、C#やVB.NETの場合特に何も付けないですね。
コード書くときはVS.NETのインテリセンスでそれらしく補完出来ますし、マウスポインタ当てれば型の情報など表示されるので、変数名で判別することが少なくなりました。

でもなぜかわかりませんが、ローカル変数や、引数のstringの場合だけstrXxxみたいな変数付けちゃうときがあります。
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-02-08 22:40
引用:

じゃんぬねっとさんの書き込み (2008-02-08 14:02) より:
Microsoft.NET 系の言語屋さんは 「ガイドライン」 が公式にあるのにも関わらず独自ルールがあることが多く困っています。



特にVB6→VB.NETへの移行組が以前まで使ってたネーミングルールをそのまま持ってくるっていうのをよく目にします。

私は、
基本はつけないけど下記みたいな状況ではつけるときもあるかも

string strId = "123";
int iId = int.Parse(strId);

データの意味は変わらないけど型を変換する場合。
それにプリフィックスないと変数名かぶっちゃいますし・・・。
まりも
ベテラン
会議室デビュー日: 2006/08/19
投稿数: 77
投稿日時: 2008-02-08 22:46
Joel on Softwareを見た時は、なるほどそういうことだったのか、と感心したのですが。

でも、よく考えたら、そこまでするんだったらクラス定義したほうがいいと思いました。コンパイラの方がミスが少ないですし。
jama
常連さん
会議室デビュー日: 2006/09/12
投稿数: 45
投稿日時: 2008-02-09 00:08
型のプレフィクスは付けないですが、スコープのプレフィクスは付けます。
VBではプレフィクス付けないとプロパティとかぶるし。

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