トップページ⇒tech
1001コメント253KB

クラス名・変数名に迷ったら書き込むスレ。Part19

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2010/12/24(金) 23:33:49
クラス名、変数名のつけ方に悩んだら書き込むスレです。

命名規則や設計の善し悪しについて議論するのは基本的に禁止。

前スレ
クラス名・変数名に迷ったら書き込むスレ。Part18
http://hibari.2ch.net/test/read.cgi/tech/1277016982/
0809デフォルトの名無しさん2011/05/14(土) 14:06:44.59
>>808
「全体として読みやすければ」日本語も全く問題ない

今のところ自分では全体として読みやすくできないから日本語は使いものにならん
0810デフォルトの名無しさん2011/05/14(土) 14:20:21.96
慣れれば結構読みやすいよ。
日本語名の欠点はむしろ入力の方。

だから自分で触る必用のないサンプルコードとかなら全然無問題。
弄る必用のあるコードで使うのは却下。
0811デフォルトの名無しさん2011/05/14(土) 23:50:29.75
buttonOkて今ではウンコ呼ばわりのハンガリアンみたいだな
0812デフォルトの名無しさん2011/05/14(土) 23:57:07.34
いちにーハンガリアン、にーにーハンガリアン♪
ハンガリアン、ハンガリアン♪

の後って何て歌ってるんだっけ?
0813デフォルトの名無しさん2011/05/15(日) 00:07:23.22
今って、システムハンガリアンとアプリケーションハンガリアンの両方とも叩かれてんの?
0814デフォルトの名無しさん2011/05/15(日) 00:12:23.94
何度も同じ話を飽きずにループするようになったら、比喩ではなく正味にボケ老人と同じ。
2chにはそういうおかしな奴が多いけどね。
0815デフォルトの名無しさん2011/05/15(日) 00:20:12.70
同じアニメを飽きずに何度も観たりはするけどな
0816デフォルトの名無しさん2011/05/15(日) 00:21:57.94
>>814
そういう奴らでも生まれついての馬鹿であるお前よりましだけどな
0817デフォルトの名無しさん2011/05/15(日) 09:12:40.01
>>813
いろいろはしょって質問するけど、
buttonOkはアプリケーションハンガリアンに属するの?
08188132011/05/15(日) 11:20:03.69
>>817
自分は>811に対応しただけなんで分からん。
buttonOkとcheckOkとradioOkが共存するようなプログラムなら、そうかも。
0819デフォルトの名無しさん2011/05/15(日) 23:45:25.75
俺は okButton を使うが、コントロール関係ではシステムハンガリアンもアリだぞ
そして buttonOk はシステムハンガリアンだろ
0820デフォルトの名無しさん2011/05/16(月) 12:15:02.12
>>819
ああそうか、button型を用意するという話か。単なる二値型くらいの認識だった。
0821デフォルトの名無しさん2011/05/20(金) 01:36:58.39
趣旨とずれるけどさ
Commonなんたらって名前って使い時むずいよね
0822デフォルトの名無しさん2011/05/20(金) 01:54:36.52
開き直って、最初から「Commonなんちゃら」って単語じゃない限り使わない……くらいでも良いかもしれん
0823デフォルトの名無しさん2011/05/21(土) 14:54:11.56
肛門と同じくらい難しいよね
0824デフォルトの名無しさん2011/05/22(日) 08:57:01.97
つまらないのでお前さん一輪挿しな。
0825デフォルトの名無しさん2011/05/22(日) 09:00:08.92
菊でよろしかったですか
0826デフォルトの名無しさん2011/05/22(日) 09:38:35.61
825
0827デフォルトの名無しさん2011/05/26(木) 07:00:56.57
UIでのコントール名はコントロールのクラス名そのまま使うな。
下手にButtonをBtnとか省略すると、使うコントロールの種類が増えると覚えるの
大変。カレンダーコントロールの省略形なんだっけ?みたいな。それがプロジェクト毎に
違うともう最悪。コーディングでいちいち手が止まる。ということで前やった
プロジェクトで、最初省略形使ってたが、変えさせた。
0828デフォルトの名無しさん2011/05/26(木) 08:05:34.39
radioButtonListSomethingとかいうのが出来たりするんだよな
0829デフォルトの名無しさん2011/05/26(木) 17:15:23.68
>>827
どういうふうに変えさせたのか?(一元化させたのか?)kwsk
0830デフォルトの名無しさん2011/05/26(木) 17:32:58.71
俺なら3語、4語辺りになったらそっくり頭文字だけ使うようにする
Label → hogeLabel
Button → hogeButton
RadioButton → hogeRadioButton
RadioButtonList → hogeRbl
DropDownList → hogeDdl
0831デフォルトの名無しさん2011/05/27(金) 09:13:29.49
>>829
省略形一切排除させただけだよ。3,4語だろうとそれ以上だろうと、xxxフルコントール名に
させた。最初はプロパーの人に対応表みたいの配られたが、いろんな会社の人で集まってやる
プロジェクトでその対応表廃止させた。ルール1個増える=考えて手が止まる時間増えるだから、
ルールはシンプルにさせた。っていってもあくまでコントロール名だけのルールね。
まぁ、技術者のレベルさまざまだろうから、コード補完使わないで1文字ずつ
タイプしてる人いたらあれだけど。hogeRadioButtonList全然問題なし。
0832デフォルトの名無しさん2011/05/27(金) 09:20:26.84
xxxフルコントール名ってよりxxxコントロールのクラス名か。
0833デフォルトの名無しさん2011/05/27(金) 22:41:30.71
そうしてhogeRadioBottonListができあがるわけか
0834デフォルトの名無しさん2011/05/28(土) 03:44:27.78
いろんな環境の人間が集まるところならhogeRadioBottonListのほうが効率いいだろな
0835デフォルトの名無しさん2011/05/28(土) 06:11:39.39
効率のいいボットンリストっていやだな
0836デフォルトの名無しさん2011/05/28(土) 12:23:32.67
なんか厳密に単語単位で頭を大文字にすると一続きの言葉って感じがしないな
RadioButton,Radiobutton
ClassName,Classname
0837デフォルトの名無しさん2011/05/28(土) 12:30:42.12
なんとかNameは単語単位でCamelCaseにしているが、
なぜかFileNameとFilenameは迷う。
0838デフォルトの名無しさん2011/05/28(土) 12:56:25.32
>837
いろんなAPIでFileNameとFilenameが混在しているからでは?
0839デフォルトの名無しさん2011/05/28(土) 13:43:33.73
何かの数を表す変数名がいつも地味に迷う

〜s にしようか、〜Num にしようか、〜Count にしようかなど
ひとつのプロジェクト内で揃えた方がいいのは分かっているが・・・

たいてい無難に num〜 に落ち着かせるが、なんか負けた気がする
0840デフォルトの名無しさん2011/05/28(土) 14:02:21.93
>>839
かわいいなw
0841デフォルトの名無しさん2011/05/28(土) 14:05:01.11
n_itemsとかかな。結局。
ささいな変数にごっちゃりした名前をつけたくない。
0842デフォルトの名無しさん2011/05/28(土) 14:19:10.53
些細な変数だから後で見たときに見た瞬間分かる名前を付けるんだよ。
これは教条主義でもなんでもなく、普通はそう「したい」と思うだろ。
だって些細な変数の名前の意味を推測するのなんか時間の無駄でしかない。

少なくとも"n_items"を見て即迷い無く"number of items"の意味だと分かる人間が
書いた本人以外にいると思えないね。
0843デフォルトの名無しさん2011/05/28(土) 14:37:38.78
同意したいが先頭にnが付いてたら個数ってのはすぐ分かるなぁ。
0844デフォルトの名無しさん2011/05/28(土) 14:45:02.82
>>842
http://www.google.com/codesearch
で\Wn_とか調べてみるといいさ。俺はその文化に従っただけ。
0845デフォルトの名無しさん2011/05/28(土) 14:52:17.97
先頭にnだけだとハンガリアン記法にも見えるし
俺はnum_xxx、numXxxを薦める
0846デフォルトの名無しさん2011/05/28(土) 15:05:38.03
>>845
実際にコードに出てくる変数はその1つじゃないから全体がシステムハンガリアン
かどうかは既知のはず。
0847デフォルトの名無しさん2011/05/28(土) 16:36:38.51
「いろはにほへと」という文字列内に「はにほ」という文字列が含まれているか調べる場合、
「いろはにほへと」の方の文字列を格納する変数の名前は何が良いでしょうか
0848デフォルトの名無しさん2011/05/28(土) 16:40:12.15
チェックメソッドの引数の名前ならpatternとかmessageとかtextとか文脈で分ける感じ
0849デフォルトの名無しさん2011/05/28(土) 17:37:05.65
haystack から needle を探すみたいな命名になってることが稀によくある。
0850デフォルトの名無しさん2011/05/28(土) 17:44:46.15
ユーティリティ系ならいいかも。
インスタンスメソッドならNGを出すな、俺。
0851デフォルトの名無しさん2011/05/29(日) 04:29:21.37
俺もitemsの個数はnItemsかなあ。
どっちのハンガリアンだとしても、nが頭についてたらサイズ以外の何に見えるんだろう。
0852デフォルトの名無しさん2011/05/29(日) 12:16:06.09
どっちのハンガリアンでも
ハンガリアンはキモい
0853デフォルトの名無しさん2011/05/29(日) 12:17:15.64
お前がきもい
0854デフォルトの名無しさん2011/05/29(日) 12:42:24.20
nで「〜の数」を表すってそんな習慣あったなそういえばw
言われてやっと思い出した。
自分でも10年前はそんなコードを書いていた気がする。
が、今同じことやれと言われたら断固拒否だな。
0855デフォルトの名無しさん2011/05/29(日) 13:05:05.35
俺自身は n〜 はあまり好きじゃないけど、コーディング基準とかで n〜 がサイズ/個数
を表すとなっていたら、別に違和感なく書ける。

断固拒否 とかの理由が知りたいもんだ。

単なる好みなの?
0856デフォルトの名無しさん2011/05/29(日) 13:14:46.76
なんか唐突に訳のわかんない規制が始まってる?文字数がどうとか弾かれるけど....

>>855
こういうの肯定する人って「そのルールを知ってれば自明だから問題ない」って言うんだけど、
逆を返せば「ルールを知らない人には意味不明だから問題」なんだよな。
0857デフォルトの名無しさん2011/05/29(日) 13:16:43.88
>>856
情報の圧縮は、それが理解できる場合に限り常に正義だからな
変数名だって理解出来るなら短い方が良い
0858デフォルトの名無しさん2011/05/29(日) 13:18:24.28
<承前>
そもそも同じことはもっと明示的にitemCountとか、せめてnumItemsと書ける。
たった2,3文字節約するメリットと可読性を損なうデメリットのどっちを重視すべきかは
常識があれば明らかだな。
0859デフォルトの名無しさん2011/05/29(日) 14:00:34.02
>>856
>逆を返せば「ルールを知らない人には意味不明だから問題」なんだよな。

だから、「コーディング基準」って書いてあるんだけど。
断固拒否するほど、意味不明なのか?
0860デフォルトの名無しさん2011/05/29(日) 14:04:06.67
>>858
> itemCountとか、せめてnumItem

これが明示的かどうかは人によるんじゃね?

少なくとも俺には、n〜 と同等としか思えない。
0861デフォルトの名無しさん2011/05/29(日) 14:13:53.34
まあ宗教論争にしかならんよなw
でもグローバルに見て結局どっちの宗教が優勢になったかは明らかだと思うが。

>>860
OKでは対案please
0862デフォルトの名無しさん2011/05/29(日) 14:16:57.38
nが個数や長さを表すのは常識だろ。カウンタをiで表すのと同じ。
数学では集合Aの要素の個数はn(A)で表すし、C言語の標準関数にはstrncatやstrncpyがある。

名著「プログラミング作法」1.1名前 の節でも
> グローバルには分かりやすい名前を、ローカルには短い名前を。
とあり、分かりやすいグローバル変数の名前の例として次のものが載っている。
> int npending = 0; // 現在の入力キューの長さ
08638622011/05/29(日) 14:19:56.58
補足だけど
当たり前だがitemCountやnumItemが悪いという意味ではないからな
0864デフォルトの名無しさん2011/05/29(日) 14:25:26.81
数学とプログラミングでは扱う変数の数が違うってw
それと今時C(というかUNIX?)の省略文化を肯定的に見てる人っているの?

俺が拒否する理由は結局(システム)ハンガリアンが破綻する理由と同じ。
数個の略号で済むほど世界は単純じゃないから、略号を識別に使おうとする文化は
結局略号を覚える負担をプログラマに強いることなるだけ
0865デフォルトの名無しさん2011/05/29(日) 14:30:30.37
>>861
>でもグローバルに見て結局どっちの宗教が優勢になったかは明らかだと思うが。

俺にはとても明確と思えないけど、どっちが優勢で、その根拠は?

>OKでは対案please

個人的には NumberOf〜 としているが、人に押し付ける気はないよ。
0866デフォルトの名無しさん2011/05/29(日) 14:45:04.69
>>864
nが常識として個数、長さの意味で広く使われているという事実を指摘しただけで
補足で書いたとおり、俺もそれを押し付けるともりはないよ
まぁ、常識だけに読めないのは困りものだけど
0867デフォルトの名無しさん2011/05/29(日) 14:55:01.00
>>864
>数個の略号で済むほど世界は単純じゃないから、

(個数とかの) よく使うものだけ略号にして、それ以外は
フルで書くようにすればいいだけじゃないの?
0868デフォルトの名無しさん2011/05/29(日) 16:04:28.11
ハフマン符号化の観点から言えば、
良く現れる語には短い記号列を当てるのが合理的
個数なんてプログラムでは最も良く現れるもののひとつだから
一文字nは十分に合理性がある
0869デフォルトの名無しさん2011/05/29(日) 16:12:12.15
>>868
さすがにネタ?
まあ全然面白くないけど
0870デフォルトの名無しさん2011/05/29(日) 16:17:10.65
>>869
ついに低能が反論出来なくなりましたwww
0871デフォルトの名無しさん2011/05/29(日) 16:19:58.47
結局>>867>>868でFAだろ
>>862にあるように慣例に反してるわけでもない
0872デフォルトの名無しさん2011/05/29(日) 16:38:33.93
頻出イディオムは表記を簡略化すべき
だけど、簡略化の規則が(プロジェクト毎に)異なるくらいなら簡略化しないほうがいい
0873デフォルトの名無しさん2011/05/29(日) 17:08:13.67
簡略化しないのが原則
広く知れ渡った略記が存在するなら許容してもいい
0874デフォルトの名無しさん2011/05/29(日) 17:23:07.85
よーし、みんなでJavaや.Netの配列系クラス(インタフェース)の
長さを表すメソッドをnにしようぜ。
items.n();
0875デフォルトの名無しさん2011/05/29(日) 17:28:12.75
>>871
今から振り返れば慣例というより「悪習」だと思うけど....

入力補完はおろかコピペすら手軽にできないエディタが一般的で、かつコードの規模も
ずっと小さかった牧歌的な時代の慣例を無批判無反省に受け入れるってどうかね。
0876デフォルトの名無しさん2011/05/29(日) 17:30:33.68
まあやっぱり宗教論争だな。
俺はコードに大規模化・複雑化が要求されている時代だからこそ、
名前は可能な限り明示的(ぱっと見て迷いなくわかる)であるべきで、
数文字の短縮のためにプログラマに規約の熟知を強いる名前なんか
この忙しい時代に論外だと思うし、それが世界のトレンドだと思うけどねー
0877デフォルトの名無しさん2011/05/29(日) 17:48:25.39
>>874
いつ変数名のprefix等の話がメソッド名の話になったの?
Java土方はコンテクスト理解できないから可哀想

>>875
世間のトレンドじゃなくて土方のトレンド
0878デフォルトの名無しさん2011/05/29(日) 18:01:16.46
些細な(>>841>>842)変数名って言ってるんだから
ここで言ってるのってpublicな変数/関数名じゃなくて
privateもしくは関数ローカルな変数名だろ?
そんなのに省略しない変数名付けるとか
入力補完とか以前に読み難いわ
0879デフォルトの名無しさん2011/05/29(日) 18:06:02.92
>>878
そもそもそういう前提なら、itemsかcountで無問題。
"n_"みたいな修飾は冗長でしかない。
0880デフォルトの名無しさん2011/05/29(日) 18:08:39.85
>>879
そのスコープに個数を持つものが一つしか無いならそうだね
0881デフォルトの名無しさん2011/05/29(日) 18:31:45.36
>>879
そういう前提もなにもパブリック変数なんて
ほとんど使わないだろうに
0882デフォルトの名無しさん2011/05/29(日) 18:35:35.96
>>877
馬鹿は口開くな
0883デフォルトの名無しさん2011/05/29(日) 19:18:46.92
Java土方は"n_"表記がコーディング規約で決まってても
覚えてられないほど低能だと分かった
0884デフォルトの名無しさん2011/05/29(日) 20:02:37.80
そんな理解に至るお前が低能
0885デフォルトの名無しさん2011/05/29(日) 22:29:21.39
なんか楽しそうなことになってるが、
正直、ローカル変数程度なら何でもいいわ。
0886デフォルトの名無しさん2011/05/29(日) 22:31:22.63
>>879
items、だと集合そのものと紛らわしいよ
ましてや配列から個数の情報が引き出せないC言語だと
配列とその個数を両方引数として渡す、なんてのは日常茶飯事だしな
0887デフォルトの名無しさん2011/05/29(日) 23:16:51.76
一時変数のイテレータの名前どうしてます?
itじゃ2つ以上あると困るし。。。
0888デフォルトの名無しさん2011/05/30(月) 04:08:42.72
コンテナの変数名を単数形にしたものかなぁ。
1個ならitで済ませてる
0889デフォルトの名無しさん2011/05/30(月) 10:37:07.20
またTON主催の無知自慢大会やってたのか
0890デフォルトの名無しさん2011/05/30(月) 15:54:16.22
>>886
自分も良く集合体は複数形にするんだが、itemとitemsとnItemsが並んだときは流石に直そうか迷ったw
0891デフォルトの名無しさん2011/05/30(月) 16:07:53.27
複数形が無い単語あるよ
0892デフォルトの名無しさん2011/05/30(月) 16:33:27.26
羊や鯉あたりは変数名にすることがないだろうから気にしない。
問題になりそうな単複同形は、たとえば何だろう?
0893デフォルトの名無しさん2011/05/30(月) 16:38:50.17
data
0894デフォルトの名無しさん2011/05/30(月) 16:40:57.39
media
0895デフォルトの名無しさん2011/05/30(月) 16:42:42.59
そいつらの単数はdatum, mediumじゃん…
0896デフォルトの名無しさん2011/05/30(月) 16:52:14.39
複数形でいつも気になるのはindexだな。
indicesがいいのかindexesのままでいいのか。

あと、nameのリストをnamesとしたあと、
namesのリストをnamessと表現してる。
foreach (namess in namesss) foreach (names in namess) foreach (name in names)
いくらでもイケる。
0897デフォルトの名無しさん2011/05/30(月) 16:54:32.17
pathとdirってどう違うんだ?
後者はディレクトリってのはわかるけど、
前者はディレクトリじゃなくてファイル名も含む?
もしくはどちらもおk?

・アップロードするディレクトリ(相対パス)
・アップロードするディレクトリ(絶対パス)
この2つのメンバ変数の名前で悩んでる
0898デフォルトの名無しさん2011/05/30(月) 16:55:29.57
なにそれこわい。
0899デフォルトの名無しさん2011/05/30(月) 18:47:08.13
>>897
ファイルを指し示すなら、path = dir + filename じゃないかな。
ファイルの保存位置とかなら、path == dir でいいかも。
0900デフォルトの名無しさん2011/05/30(月) 19:19:18.03
ttp://www.ruby-lang.org/ja/man/html/File.html
ここらへんのライブラリのインタフェースをみて参考にするという手もある。
0901デフォルトの名無しさん2011/05/30(月) 19:25:01.56
参考も何も

path: ファイルまたはディレクトリの場所
dir: ディレクトリの名前または場所

これ以外の解釈ってあるの?
さすがにこれってプログラマっていうよりパソヲタ1年生レベルの話の気がするけど...
0902デフォルトの名無しさん2011/05/30(月) 21:55:31.67
>>896
> indicesがいいのかindexesのままでいいのか。
複数形じゃないけど、 centre と center とか英語と米語で違う場合にけっこう悩む
0903デフォルトの名無しさん2011/05/30(月) 22:04:43.99
colourとか書きたくないので米語だな
0904デフォルトの名無しさん2011/05/30(月) 22:21:57.29
おれは英語だ
0905デフォルトの名無しさん2011/05/31(火) 02:00:44.32
>>891
英文法上どうかより、プログラミング的に分かりやすいかどうかが大事なので
無理矢理にでも複数形にするよ。
0906デフォルトの名無しさん2011/05/31(火) 02:17:40.76
俺はそういうときは最後に大文字でSつけてる
0907デフォルトの名無しさん2011/05/31(火) 04:53:11.85
インダシーズとインデクセズなら前者一択だ。後者は死語に向かって邁進中。
それと数えられない名詞にsをつけるのは英文法上は間違っていない。
例えばwatersといえばコップとかバケツとか何かの容器に入ってるんだろと解釈されるだけ。
0908デフォルトの名無しさん2011/05/31(火) 09:26:14.53
この先waterという変数にお目にかかる日くるだろうか(ヽ´ω`)
レス数が900を超えています。1000を超えると表示できなくなるよ。