プログラマーを悩ませる、命名の難しさについて

変数名・メソッド名・DBの列名等などをどう名前付けていくべきかについての対話の記録
75
suno (すの) @suno88

@stealthinu Java では許されないかもw source(src)/dest(dst) を避けて、from/to にするのはどうでしょう。例えば、fileFrom/fileTo とか、positionFrom/positionTo のように。

2014-03-28 14:21:31
Kiyoshi SATOH @stealthinu

@suno88 おー、なるほど。たしかにそれスマートですね。それでいってみます。

2014-03-28 14:28:18
鍋太郎 @nabetaro

@stealthinu infoは省略じゃなくても、使うべきではないと感じます。名前として何も表していないと感じる……

2014-03-28 14:37:54
Kiyoshi SATOH @stealthinu

@nabetaro あ、hogeInfoとかの使いかたを想定していました。src/dstは単体でもhogeSrcとかでも使いたい気持ちによくなるのですがどんなもんかなあって。

2014-03-28 14:44:18
鍋太郎 @nabetaro

@stealthinu はい。そうなんだと思うのですけど、じゃぁhogeでいいんじゃないかと思うわけです

2014-03-28 14:57:56
Kiyoshi SATOH @stealthinu

@nabetaro なるほど。例えば店舗情報とかを扱うのに shopName,shopInfo,shopImage,shopLatitude…みたいなのを考えてました。が、Infoが具体的じゃないってことですよね。infoはそれら全部ひっくるめたやつじゃん的な。

2014-03-28 15:02:45
suno (すの) @suno88

@stealthinu @nabetaro info をつけたくなったら命名がマズいサインだと思います。何の情報なのかを正しく名前として表さないと。店の営業時間なら shopHour のように明示的に、店の情報を総括して持つクラス・配列なら shop だけでいいと思います。

2014-03-28 15:09:32
鍋太郎 @nabetaro

@suno88 @stealthinu はい、そういうことです。大抵の場合、infoって取り去っても困らないと思うのですよね。取り去って意味が通らない場合は、取り去らなくても意味が通らない……

2014-03-28 15:20:44
Kiyoshi SATOH @stealthinu

@nabetaro @suno88 ありがとうございます。infoはだいぶ納得です。ちなみにみなさんたぶん~flagもつけんなよ派ですよね。僕flagはすごく付けたくなっちゃうんですよね。あれはどうやって考えてますか?

2014-03-28 15:23:06
Kiyoshi SATOH @stealthinu

@nabetaro @suno88 例えばさっきのshop例でいくなら、店の駐車場の有り無しを保持するものにparkingFlagって付けたくなるんですがparkingだけにすべきでしょうか?

2014-03-28 15:25:27
suno (すの) @suno88

@stealthinu @nabetaro それなら hasParking とか hasCarPool でしょうね。

2014-03-28 15:28:37
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro 自分はメソッドだとhasParkingでしっくりくるんですがメンバー変数とかdbの項目名だと~Flagにしたくなるのです。どうもデータストックしとく場所だとflagってつけたくなるみたい。そういう場合もhas~系にされてますか?

2014-03-28 15:33:51
suno (すの) @suno88

@stealthinu @nabetaro そもそもフラグとは状態が変わった時に立ったり座ったり(笑)するもので、「店に駐車場がある」という基本的に不変のことがらを指すものをフラグ呼ばわりするのは、私は奇妙に感じます。(※個人の感想です)

2014-03-28 15:46:42
Mitth.ras.safis (スラス) @mitth_ras_safis

@suno88 ちなみに 米人=駐車場がある=ON 日本人=駐車場がない=ON な気がする。「それでは世界基準ではまずいだろう」という「常に完璧」な日本の技術者は flag を記述する・・な理論w ついでにいうとこれを flg と記述する若造多し。

2014-03-28 15:57:34
suno (すの) @suno88

@mitth_ras_safis それはちょっと私の感覚には合いませんね。ある = 1(on)、ない = 0(off) というのが私の感覚で、この感覚の差で揉めたことはありません。ある = -1、ない = 0 という人がいたら、VB プログラマーですね :-)

2014-03-28 16:00:37
Mitth.ras.safis (スラス) @mitth_ras_safis

@suno88 あ、クリエイトするITな人はある=1(on) でいいと思います。日本人の駐車場デフォが「無い」~というお話。。ある学校の先生は「正=デフォ=0 だっすなわち 日本には駐車場が無いのが普通(正)なので、無しがゼロ」という展開をする。あってんだかまちがってんだか・・w

2014-03-28 16:27:28
suno (すの) @suno88

@mitth_ras_safis 「駐車場がないのがデフォルト」はたぶん東京ローカルな感覚だと思いますよ。都心から 30km も離れれば、コンビニにだって駐車場があるのが当たり前ですから。

2014-03-28 16:29:17

bool 以外に件数も管理する時はどうするか

Kiyoshi SATOH @stealthinu

@suno88 @nabetaro おー、なるほど。状態があまり変わらないものにもFlagって付けるのは変、という見方はなるほどです。DBのカラム名で駐車場有り無しと台数を持つとしてparkingとparkingNumberとされますか?

2014-03-28 16:02:30
suno (すの) @suno88

@stealthinu @nabetaro parkingNumber は駐車場番号なので parkingCapacity にします。parkingCapacity があれば parking は不要ですね。parkingCapacity = 0 なら駐車場がないと分かりますから。

2014-03-28 16:05:59
Kiyoshi SATOH @stealthinu

@suno88 @nabetaro 確かにnumberはだめっすね。無しの場合0でいいかとも思ったんですが、基本的には無し・有りだけわかればよくて台数は付加情報的な場合、capacityだけだと、0で「無し」は表現できても「有り」を表現できなくないですか?

2014-03-28 16:21:34
鍋太郎 @nabetaro

@stealthinu @suno88 とりあえずflagだけで言うと、flagが立った状態が何を表すのかがわかりにくいと感じます。parkingFlagなら、onのときに駐車場がどういう状態なのか別途定義しないといけないですよね。もっと名前で説明すればいいのではないかと

2014-03-28 16:22:48
Kiyoshi SATOH @stealthinu

@nabetaro @suno88 ああなるほどなるほど。hasParkingで値がtrueならそのまま駐車場有りの意味になりますもんね。それは納得。だいぶ~flag表現使わないの気持ちがわかってきました。

2014-03-28 16:25:20
suno (すの) @suno88

@stealthinu @nabetaro PARKING_CAPACITY = 0 で駐車場なし、> 0 で駐車場ありですよね。WHERE PARKING = 1 と WHERE PARKING_CAPACITY > 0 のパフォーマンスの差は微々たるものだと思います。

2014-03-28 16:26:20
りず @rizumita

@suno88 @stealthinu @nabetaro capacityは定員という意味なので、vacancyの方が良くないですか?(勘違いしてる?)

2014-03-28 16:30:24