- PR -

変数名をつける時に何を気をつけますか?

投稿者投稿内容
にゃー
常連さん
会議室デビュー日: 2008/06/26
投稿数: 32
投稿日時: 2009-01-20 13:50
少しご意見を聞きたくて、こちらに投稿してみます。
参照元URLとして、武史氏のスレッドを拝借させていただきます。

参照元URLで、ハンガリアンが〜…という投稿を読んでいくにしたがい、
良い変数名のつけ方ってなんだろうか?と改めて悩みます。

私は、以下2点には気をつけています。
・あとから自分がみて見やすいもの。
・ルールが統一されているもの。

そこで、
Shared Function → SFnc_XXX
Function      → Fnc_XXX
Private → PrXXX

ローカル変数の場合のみ(ローカルのL+型+名前)
dim LDbl_xxx as double
dim LStr_xxx as string

※プロジェクトなどで名称ルールが存在しないことを前提としています。

皆さんが変数名、関数名などを作る場合には、
どのようなルールの下でされていますでしょうか?
(アバウトな質問なので言語は問いません)

誤字脱字修正

[ メッセージ編集済み 編集者: にゃー 編集日時 2009-01-20 14:17 ]
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2009-01-20 14:48
こんにちは。

引用:

にゃーさんの書き込み (2009-01-20 13:50) より:
少しご意見を聞きたくて、こちらに投稿してみます。
参照元URLとして、武史氏のスレッドを拝借させていただきます。

参照元URLで、ハンガリアンが〜…という投稿を読んでいくにしたがい、
良い変数名のつけ方ってなんだろうか?と改めて悩みます。



参照先のスレッドはちらっとしか覗いていないのですが…

「システムハンガリアン」はMicrosoftが間違った解釈を元に作った古いルールで、
今はMicrosoftも、そして参照先で投稿していらっしゃる皆さんも「システムハンガリアン」はできるだけ避けましょうね
という共通認識なのでは?

引用:

私は、以下2点には気をつけています。
・あとから自分がみて見やすいもの。
・ルールが統一されているもの。

そこで、
Shared Function → SFnc_XXX
Function      → Fnc_XXX
Private → PrXXX

ローカル変数の場合のみ(ローカルのL+型+名前)
dim LDbl_xxx as double
dim LStr_xxx as string



変数のみならず関数にまで、システムハンガリアンをつけるなんて・・
申し訳ないですが、
もし私がこんなソースに出くわしたら、イラッとし嫌悪感を抱きます。
(いや、実際にこんなソースはよくお目にかかるのですが…
こんなソースに限って、センスのない意味の分かりにくいネーミングが多い。
コード自体にもセンスのカケラも感じられないことが多い。)
ごん太
大ベテラン
会議室デビュー日: 2002/07/30
投稿数: 182
お住まい・勤務地: 森の中
投稿日時: 2009-01-20 14:56
私の場合以下の2点を注意しています。

変数を見ただけで内容が解りやすく他の変数と見分けが付き易い。
ループ等カウントする際は単純な文字を付ける(iやii等)
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-20 15:21
C#, VB.NET で開発をしていますが、基本的には↓にあるコーディング標準を意識して名前をつけています。
http://www.objectclub.jp/community/codingstandard/

ただ、いくつか異なることもやっています。
・ローカル変数と区別する目的で、private なフィールドの先頭に _ (アンダースコア)をつける
・画面上にある固定的なラベルなど、処理と関係ないオブジェクトで、label1 や label2 など自動で付けられる名前をそのまま使う
・使い捨てのローカル変数に tmp や str, msg, work などの短い名前をつける

public なものは気を遣って名前をつけてほしいと思いますが、private なものはあまり気にしません。例えば、画面クラス名が FrmMain だとちょっとしょんぼりしますが、ローカル変数に bResult とついてても、特に気にはなりません。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2009-01-20 15:30
引用:

にゃーさんの書き込み (2009-01-20 13:50) より:
そこで、
Shared Function → SFnc_XXX
Function      → Fnc_XXX
Private → PrXXX

ローカル変数の場合のみ(ローカルのL+型+名前)
dim LDbl_xxx as double
dim LStr_xxx as string


アンケートのスレッドだという認識で回答します。
私は、どうせ気をつける・気を使うならば、むしろ XXX や xxx のほうをどんな名前にするかにこだわったほうが良いと思います。

追記します。(2009/1/20 17:14:30)

この回答は、変数名の付けかたに工数を割く際に、工数の比率は SFnc, Fnc, Pr, LDbl, LStr よりも XXX, xxx のほうを大きくしたほうが良い、という意図でおこないました。

[ メッセージ編集済み 編集者: unibon 編集日時 2009-01-20 17:14 ]
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2009-01-20 15:46
引用:

変数のみならず関数にまで、システムハンガリアンをつけるなんて・・
申し訳ないですが、
もし私がこんなソースに出くわしたら、イラッとし嫌悪感を抱きます。
(いや、実際にこんなソースはよくお目にかかるのですが…
こんなソースに限って、センスのない意味の分かりにくいネーミングが多い。
コード自体にもセンスのカケラも感じられないことが多い。)



激しく同意です。
私はもっぱらJava ですが、

コード:
String strUserName = null;



みたいな変数名に何の利点があるのか理解しがたいです。

あと、

引用:

・ローカル変数と区別する目的で、private なフィールドの先頭に _ (アンダースコア)をつける



これも、よく見かけますが、個人的にはあまり好きではありません。
アンダースコアは見づらいし、入力しづらいので。
そもそも、ローカル変数とprivate 変数を、区別しなければならないはめにあまり
陥ったことがないですが、そんなにありますかね?


にゃー
常連さん
会議室デビュー日: 2008/06/26
投稿数: 32
投稿日時: 2009-01-20 16:07
個人で簡単なゲームを作るときなど、
私は、変数名を気にしたことはありませんでした。
しかし、自分以外がコードをみる可能性があるものの場合、
ほかの人が見たときに、すぐにわかるものである必要があるかと思い、
ぱっと見て何処で宣言したものなのかを区別したいと思いました。

>ローカル変数とprivate 変数を、区別しなければならないはめにあまり
>陥ったことがないですが、そんなにありますかね?
改めて言われると確かに・・・と思う反面、区別してなかった場合に読みやすいか?
といわれると疑問に思ったりもします。

Privateやローカル変数名、関数名の接頭、接尾に決まりごとを付けない派のひとは、
・エディターの力で検索できる
・カーソルを持っていくと型が表示される
といったことなのですかね?

xxxxはダメ。という意見も大変ありがたいのですが、
否定だけでなくxxxxという形で実装してますよっていう場となればと思います。


[ メッセージ編集済み 編集者: にゃー 編集日時 2009-01-20 16:09 ]
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2009-01-20 16:41
引用:

改めて言われると確かに・・・と思う反面、区別してなかった場合に読みやすいか?
といわれると疑問に思ったりもします。


そもそも区別しなければならないようなコーディングにしない、ということです。

引用:

Privateやローカル変数名、関数名の接頭、接尾に決まりごとを付けない派のひとは、
・エディターの力で検索できる
・カーソルを持っていくと型が表示される
といったことなのですかね?


いえ、たとえば、userID という変数名であれば、それを見ただけで、
文字型なのか、数値型なのかがわかるようにする、ということです。
どうやってわかるようにするのかは、いろいろあるでしょうが。

例外的に、メソッドの引数だけは、先頭に a か、an を付けてます。





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