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

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

話の発端は

先日公開された FC2 ソースへの感想から。
http://opensource.slashdot.jp/story/14/03/24/0937246/FC2%E3%83%96%E3%83%AD%E3%82%B0%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%8C%96%E3%81%95%E3%82%8C%E3%82%8B

isExistメソッドとか (スコア:1)

by Anonymous Coward on 2014年03月25日 10時54分 (#2568810)

もろに日本人っぽいソースコードで好感が持てる。


テラマコ @teramako

あるある過ぎる。個人的にはexists()にすると他のとの統一性が失われる気がするのでも isAvailable とかが好みかな http://t.co/qAQMgXEkPg

2014-03-25 12:34:02
Kiyoshi SATOH @stealthinu

ああでもisExistは使わせてほしいな。だって他にしっくりくる表記がないんだもん…

2014-03-25 13:54:57
suno (すの) @suno88

@stealthinu exist は動詞なので、isExist という命名はおかしいのです。クラスのメソッドであれば SomeClass.exists()、関数であれば例えば fileExists() とか propertyExists() とすべきですね。

2014-03-25 13:57:35
Kiyoshi SATOH @stealthinu

@suno88 ネタ元にもあるんですがis~で揃ってるところに違う表現を入れなくちゃいけないのが気持ち悪くて。これって、コンピュータ言語の文法的に直交性があるほうが気持ち良いのに、自然言語の文法を持ち込むと気持ち悪くなるっていう、SQLとかRailsの単数・複数型の

2014-03-25 14:02:18
Kiyoshi SATOH @stealthinu

@suno88 話と通じるところがあるんでないかなあって思うのです。

2014-03-25 14:03:05
suno (すの) @suno88

@stealthinu その視点は自分にはなかったので新鮮です。Ruby なら exists?、Lisp なら exists-p のように統一した表記に落とし込めるのにってことですか。私はメソッド名が isXXX、hasYYY、exists とバラバラでも気になりませんけどね。

2014-03-25 14:07:22
Kiyoshi SATOH @stealthinu

@suno88 そそ、そういう感じです。なので自分はRubyはさすがだなあと感じます。

2014-03-25 14:21:51

英語的に正しいかどうか

Ktz @ktz_alias

どうしてもis付けなきゃならんのなら、isExistance()にするかな? https://t.co/2OcrIMNMQx

2014-03-25 12:42:58
suno (すの) @suno88

@ktz_alias それもおかしい。Foo is existence. は「Foo が存在する」という意味にはなりません。「Foo は(虚構、幻影ではなく)存在である」という意味です。

2014-03-25 14:35:58
Ktz @ktz_alias

@suno88 確かに。そもそもis~では表現できないということですかの

2014-03-25 15:37:33
suno (すの) @suno88

@ktz_alias そうです。たとえばあるファイルを読み込めるかを見たいということなら fileExists(filename) ではなく isReadable(filename) と逃げることもできますが、ちょっとトリッキーに思えます。

2014-03-25 15:42:39
りすのすけ @risunosuke

@suno88 @ktz_alias isTrueThatHogeContainsHage()メソッドを提案します。

2014-03-25 16:37:22
suno (すの) @suno88

@risunosuke @ktz_alias その発想はなかったwww そんなメソッド名を後輩がつけたら、もっと頭を使う場所があるだろうと一喝します。

2014-03-25 16:39:29
りすのすけ @risunosuke

@suno88 @ktz_alias 何しろ僕はObjective-C経験者ですから。えっへん。

2014-03-25 16:40:13

関数名に日本語を使う話とか

りすのすけ @risunosuke

@stealthinu @suno88 function 不適切な値が存在するか(array){ } ができる言語についてはどうお考えですか?

2014-03-25 14:30:46
suno (すの) @suno88

@risunosuke @stealthinu TDD で有名な和田卓人さんは、テストメソッドは分かりやすさを優先して日本語メソッド名をつけたほうがよいと主張されています。それ以外で日本語メソッドを積極的に使うべきという主張はあまり見ませんね。

2014-03-25 14:43:05
りすのすけ @risunosuke

@suno88 @stealthinu うんコードマニアで見かけました(笑

2014-03-25 14:43:54
Kiyoshi SATOH @stealthinu

@ktz_alias existanceでぐぐったらweblioのページでexistenceのよくあるミススペルだぜ!と言われました。僕もexistanceだと思ってましたわ。

2014-03-25 14:30:27
Kiyoshi SATOH @stealthinu

@risunosuke @suno88 お題の意図がわからんかったです。そしてすのさんとりすのすけさんの話が合ってるのを見て orz となってます。

2014-03-25 14:53:06
Kiyoshi SATOH @stealthinu

今日のTLで英語とメソッド名の話が続いてたせいで、怖くて新たなメソッド名が付けれなくなったよママン。なんで英語ネイティブに生まれなかったんだろ… ううう…

2014-03-25 16:58:29

数日後、もう少し考えてみるの巻

Kiyoshi SATOH @stealthinu

命名でinfoやtempくらいの省略はいいよね?で、元/先を表す時src/dstの省略表記はどう思います?destinationは長えよと感じちゃうんですがやっぱフルで書くべき?

2014-03-28 14:19:18
1 ・・ 4 次へ