2012年1月2期プログラム35: クラス名・変数名に迷ったら書き込むスレ。Part21 (85) TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
36: Lisp Scheme Part33 (960)
38: 強いAI(人工知能)ver0.0.1 (554)
39: ARToolKitでARを作ろう (243)
40: 【RAD統合環境】 Qt 総合スレ 12 【Win/Mac/Linux】 (879)

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


1 :12/01/22 〜 最終レス :12/01/26
クラス名、変数名のつけ方に悩んだら書き込むスレです。
命名規則や設計の善し悪しについて議論するのは基本的に禁止。
前スレ
クラス名・変数名に迷ったら書き込むスレ。Part20
http://toro.2ch.net/test/read.cgi/tech/1311942721/

2 :
>>1
> 前スレファイル名議論
住所の最後が名前、
パスの最後がファイル名、みたいなもんだな。
できるだけ簡潔なものを選ぶ余地がある。

3 :
1おつ
>>前1000
極論ではなく一般論
それもコーディングだけではなく自然言語も含めたより広い世界での一般論
極論してるのはそっちだよ

4 :
>>3
馬鹿は来るな

5 :
>>4
じゃあお前が帰れよ

6 :
>>5
だからお前が失せろ

7 :
>>6
だから馬鹿はお前なんだからお前が消えねーとだめだろ
説明しないとわからんほど馬鹿なのか

8 :
>>7
さっさと失せろ馬鹿

9 :
>>8
>>4

10 :
>>9
>>4

11 :
小学校かここは

12 :
前スレ>>992
それ同じ事を言い方を変えただけ。
「その機能や概念を示す」のと「機能を読み取れること」のどこが違うんだ。
それなりに複雑な機能をもったクラスやメソッドの機能を短い名前で完全に表現
できないのは当たり前で、仔細な点は捨象して大枠の機能を抽象した名前を付けるに決まっている。
馬鹿じゃないのか。

13 :
>>12
>「その機能や概念を示す」のと「機能を読み取れること」のどこが違うんだ。
例を出して言えば「オイラー方程式」が前者で「理想流体の運動法則」が後者だ
どちらも同じ物を示しているが前者は機能や概念を隠蔽した名称だ
ぜんぜん違うだろ?
そして議論で使うのはどちらが自然かといえば前者だ
後者をいちいち使うのはあまりにもクドい

14 :
前スレ >>990
> だったらutf8だとかeucだとか文字エンコードも併記すべきな気がするぞ…
併記すべきかどうかは場合による
複数の文字コードを扱っているのであれば、併記しなければ分からない
扱っている文字コードがOSや環境のデフォルトだけであり、
あるファイルフォーマット内の文字列部分を処理しているなどなら、
文字エンコードを併記する必要性は感じない

15 :
>それなりに複雑な機能をもったクラスやメソッドの機能を短い名前で完全に表現
>できないのは当たり前で、仔細な点は捨象して大枠の機能を抽象した名前を付けるに決まっている。
あと一応言っておくが俺はクラス名やメソッド名を短く省略しろとは言っていない
狭い範囲、スコープに限定された文脈の中では短いものを使えと言っているのだ
>馬鹿じゃないのか。
それを読み取れなかったお前がBAKAです

16 :
>>15
まだいたのか
消えろ馬鹿

17 :
>>16
>>16

18 :
>>17
>>16

19 :
論破されると罵倒するしかできないってなんか可哀想だな
神様ももうすこしIQ平等に分けてあげればよかったのに罪なことするぜ

20 :
>>13
なるほど俺の誤解みたいだね。っていうかまさかそこまで馬鹿とは思わなかったw
要するに、
String.GetLength()
などという機能をそのまま表現した名前はよくないから、
String.func001()
String.YamadaTarou001()
のように単なる識別子以上のものではない名前を付けろという訳だ。
関数名と機能の対応を参照するバインダーがないと読めないコードが存在するって
都市伝説、あれは本当だったんだなw
こんなガチ馬鹿がどうしてこんなスレにいるんだろう。

21 :
>>20
>>15
ちょっと前のレスも読めない馬鹿がなんでいまだに生きてるんだろう

22 :
>>21
よ馬鹿

23 :
>>22
>>19

24 :
>>23
>>19

25 :
>>20
それはクラスというひとつの大きな単位の中のメソッド名ですよね
>>15 で彼は
> あと一応言っておくが俺はクラス名やメソッド名を短く省略しろとは言っていない
> 狭い範囲、スコープに限定された文脈の中では短いものを使えと言っているのだ
と言っているので、それは反論の方向としては間違っていると思うのですが
たとえば、
void func () {
*** = String.GetLength()
場合の***の部分などの場合の事だと思います

26 :
>>21
間違いを指摘されると「俺の真意はお前の理解と違う」ってか。
みっともない奴だな。
前スレの>>992は俺が書いた>>982に対する反論なんだから、そんな言い訳が通用する訳がない。
どんなクルクルパーだよ。

27 :
それから、メソッドやブロックのスコープ内でも明示的な名前を使え、
なんて言ってる奴が一人でも居たか?
そんな奴いねえよ一人も。
誰と戦ってるつもりなんだろうなまったく。

28 :
http://awabi.2ch.net/test/read.cgi/poverty/1327050821/3

29 :
スコープが広域であれば、略さず完全な名前を付ける
 superHogeCountWithPiyo
 pugeraDescription
スコープの狭さに応じて単語を省く
例えばローカル関数であれば、
 countWithPiyo もしくは count
 pugeraDesc または desc
できる限り略語を使わない
 ×superHogeCountWithPiyo → shCountWithPiyo
 ×pugeraDescription → pDesc, pdesc
そもそも短い単語を略す必要はない
 ×cnt ○count
 ×idx ○index

30 :
○ c
○ i

31 :
・・・とは書いてみたものの、狭域スコープでは hogeCount を nHoges みたいに略すことがある
単語を略すのであれば、number (of) → num みたいな中途半端な略し方ではムラが生じてしまう(numでは生じないだろうが)ので、一文字 number (of) → nまで略す
その単語の略語にムラが生じることはないだろうと自分で確信が持てるのであれば、使うことはある
例えば、Description は desc 以外に略語を持たないと判断できるし、Information は info 以外の略語を持たないので、狭域スコープではこれを使う
Temporary は temp と tmp が存在するので、略したいときは 一文字「t」まで略する

32 :
>>30
ごく短い、例えば3行以下の関数ローカルスコープであれば一文字でもかまわない
またはループカウンタとしてのcやiは、自分では許可している

33 :
> ごく短い、例えば3行以下の関数ローカルスコープであれば一文字でもかまわない

34 :
変数名をゴッチャリ飾って区別しないといけないようなのは、
既にメソッドが大きすぎるか、メンバ変数の場合はそれらが多すぎる。
fooBarBazList = 
appleBeerList = 
codeDoorList = 
みたいに併記しているような場合、うまくいくと
list = 
これで住むような可能性がある。

35 :
>>34
うむ。コーディングの技術がしっかりしてればほとんどの識別子は最低限まで縮めても問題は起こらないよね
というか問題が起こらないように作れると良い設計になってることが多い

36 :
いやいや大きいとか多いとかじゃなくて対象コードブロックの中に機能や状態を持ち込み過ぎ
struct A{int x,y;}a;のaじゃなく
後から読み解く奴の身になってx,yのどちらか必要な方だけを取り出して書けよと

37 :
現実問題、英語で言ったら形容詞抜きの"list"だの"count"だので十分説明の機能を果たすような
クラスはまずあり得ない。
皆無とは言わないが、むしろ例外的。
そういう特殊な前提がないと成立しないようなアホみたいな議論はするだけ時間の無駄。

38 :
>>35
丁寧なコメントが消臭剤でしか無いような場合があるのと同様に、
説明的な変数が消臭剤でしか無いような場合があるな。
早い段階ですべきは、元の悪臭漂うクソ構造を改めること。

39 :

就活中
(p)http://livedoor.blogimg.jp/jin115/imgs/3/1/31a6f8e6.jpg
就職後
(p)http://livedoor.blogimg.jp/jin115/imgs/2/b/2b790359.jpg
街の人(やらせ業者)募集中です

40 :
その画像独り歩きしてるけど
2枚の画像は1年間開いてるからね
その娘は就活うまく行ってそのインタビュー場所の近くの会社に勤めてるって事

41 :
後ろに居る男も横断歩道の向こう側にいる人も
インタビュワーも停まってる車も天候も変わってないな

42 :
偶然ってあるもんなんだな

43 :
Google Code Searchがなくなったのは痛すぎるな。
とりあえずつけたクラス名やメソッド名が外人的にあり得るか?否かをしらべるのに便利やった。

44 :
ええーーっ!! ちょっと見ない間に無くなったのか!

45 :
google code

46 :
>>30
count_hogeもcHogeもほとんど見易さ変わらないだろ

47 :
ch

48 :
>>47
もはやなんだかわからんだろそれ

49 :
決まってんだろ
チャンネルだよ

50 :
入門書とか読むと、よく「チャネル」って書いてあるよね
その発音の方がより本物に近いのは分かるが、なんか気取ってて嫌

51 :
俺はにちゃねらー

52 :
お前らはアニモー。

53 :
>>50の中では「JISに合わせること=気取っている」なのか

54 :
 前スレの、chrとかcharの974です。
 まさか論争に発展するとは見通し甘かった。
 私が書いているのはゲームの為の周辺ツールで、個人作業です。
 ですから厳密な命名規則が欲しいって程でもないんです。
#報告
 一度フルスペルで書いたのですが、書き進める内に用途が広がって
キャラクターの意味に相応しくなくなったので一切なくなってしまいました。
 計画性のないプログラムは、これだから・・・!

55 :
>>53
違う
JISに合わせる、合わせないは全く関係ない
チャネルという言い方が気取っているように感じるだけ
>>53の中ではたった一例を挙げて、それがたまたまJISに合ってただけで
「JISに合わせること=気取っている」と解釈するのか

56 :
>>54
論争になったらなったで、それを話題に盛り上がる訳で、面白いものなのだよ・・・

57 :
hashtable = {
 "foo.name": "value1",
 "foo.text": "value2",
 "bar.name": "value3",
 "bar.text": "value4"
}
みたいなデータから
{ "foo.name": "value1", "foo.text": "value2" }
だけをとりだす関数の名前を考えて下さい。
prefix = "foo."
print func(hashtable, prefix) #=> { "foo.name": "value1", "foo.text": "value2" }
今の候補
・get
・matched
・retrieve
お願いします。

58 :
find

59 :
find_by_key_prefix

60 :
複数候補だからenumかfindfirst→findnext

61 :
>>57
PickUpPrefixMatches

62 :
filterByPrefix

63 :
ウィンドウが画面の外に出ないように防ぐ処理
をお願いします

64 :
関数名?引数や返り値は何?

65 :
関数名です
戻り値なし、引数は画面のRECTとウィンドウのRECTです

66 :
その関数の副作用は何?

67 :
「ウィンドウが画面の外に出ないように防ぐ処理」じゃなくて
「(ウィンドウが画面の外に出ないように防ぎつつ)ウィンドウ移動する処理」なのでは?

68 :
>>57
Perlっぽいけどfilterできんじゃねーの?

69 :
要するにそういう細かいことをまとめて行う処理です

70 :
ちっとも細かくないやん 基本処理にしか見えん

71 :
ではそろそろ
ウィンドウが画面の外に出ないように防ぐ処理
をお願いします

72 :
MoveWindowInScreen

73 :
avoid-tilesaw

74 :
void MoveWindowInsideScreen(
 const RECT & windowRect,
 const RECT & screenRect);

75 :
void MoveWindowInsideScreen(
 const RECT & windowRect,
 const RECT & screenRect,
 RECT * pOutput);

76 :
>>71
消えろゴミ

77 :
なんでMOVEなんだよw

78 :
void ウィンドウが画面の外に出ないように防ぐ処理(
矩形 const & ウィンドウ,
矩形 const & スクリーン,
矩形 & 結果) ;
いい加減英語識別子から脱却しろ
いちいち名前付なんてくだらない作業で悩む必要がなくなって捗るぞ

79 :
preventとかcropとかかなぁ?captureはちと違うか。

80 :
confine

81 :
「ウィンドウが画面の外に出ないように防ぐ処理」って何だかよく分からないな。
この手のことをする場合、例えばWindowsなら普通は、
(1) 移動中にデスクトップの上下左右いずれかの隅に達したら、その方向にはそれ以上
移動できないようにする。
(2) 移動完了(マウスアップとか)時、ウィンドウがデスクトップの上下左右のいずれかの隅を
超えていたらデスクトップの範囲内に戻す。
のどちらかじゃいかと思うんだが、ニュアンス的にどっちとも取れないな。

82 :
>>71
KeepInsideDisplay()

83 :
ProcessingPreventedSoThatAWindowMeyNotComeOutOfAScreen

84 :
略してMoveWindow

85 :12/01/26
日本語の段階で既におかしいのにそれを英語にしても無駄
TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
36: Lisp Scheme Part33 (960)
38: 強いAI(人工知能)ver0.0.1 (554)
39: ARToolKitでARを作ろう (243)
40: 【RAD統合環境】 Qt 総合スレ 12 【Win/Mac/Linux】 (879)