メソッド名の命名規則について

下記の記事を発端に@yuruyoroが投げかけた提案?疑問?から @akisutesamaと命名規則についての議論が勃発してたので まとめました。 http://d.hatena.ne.jp/JunichiIto/20110218/1297983647 続きを読む
1
しいたけ @yuroyoro

「11.変数名やメソッド名を何かと略したがる。」に関しては、逆に長すぎる名前を付けてドヤ顔してる方が今やレガシーだろ > レガシープログラマかどうかを判断する10項目 - ITは芸術だ http://t.co/jWc8TgP

2011-08-05 12:06:29
しいたけ @yuroyoro

これは本当に良い名前か? abstractなんぞ書略できるだろうが > AbstractDependencyRespectingResourceAggregatingHeaderResponse http://bit.ly/r87Zl3

2011-08-05 12:13:26
しいたけ @yuroyoro

「IDEが補完してくれるから長い名前でもいい(キリッ」なんてもう通用しないよ

2011-08-05 12:15:14
しいたけ @yuroyoro

揮発性の高いローカル変数名なんて、2ワード以上の名前にした時点で負けだろ。いっそ省略したいくらいだ

2011-08-05 12:07:21
akisute/Masashi Ono @akisutesama

@yuroyoro Objective-Cは名前が長いほどよいメソッドであるよ

2011-08-05 12:07:11
akisute/Masashi Ono @akisutesama

@yuroyoro あ、ローカル変数に関しては全く同意。メソッドに関してはほんの僅かも意味の齟齬がないレベルまで長いほうがよいっす

2011-08-05 12:07:52
しいたけ @yuroyoro

@akisutesama 長すぎると本質が失われると思う。10ワードのメソッド名は本当に良い名前?

2011-08-05 12:09:00
akisute/Masashi Ono @akisutesama

@yuroyoro 10wordなければ一意に定まらないのであればYES。そうでなければNO。大抵の場合は6Wordぐらいで一意になると思いますけれどね。

2011-08-05 12:09:42
しいたけ @yuroyoro

@akisutesama 一意に定まるってのは、そのメソッドが属するパッケージやクラス、引数の型なんかも込みでの話だよね?そういったコンテキストを織り込むことでもっと簡潔な名前を付けられるはずなのに、やたら完全修飾したがるヤツがいて、本当にどうかと思う

2011-08-05 12:11:15
akisute/Masashi Ono @akisutesama

@yuroyoro そうすね。パッケージのしくみがあると楽にできると思います。あとは言語の文化に倣うのと、自然言語なのかプログラム言語なのかって話ですね、使う人間が好きなのが。map()とかreduce()はプログラム言語で、stringWithFormatは自然言語より。

2011-08-05 12:17:14
しいたけ @yuroyoro

@akisutesama おおむね同意。あとは、言語を問わず共通のイディオムってのがあると思う

2011-08-05 12:18:17
akisute/Masashi Ono @akisutesama

@yuroyoro ObjCの世界でgetContext(a, b)みたいなのは軽蔑されますし、rubyでcomponentsJoinedByString関数を作ったら噴飯でしょうし、言語の文化に倣うのが大事

2011-08-05 12:19:17
しいたけ @yuroyoro

@akisutesama ObjCでgetContext(a,b)がアカンのはナゼゼ?

2011-08-05 12:20:14
akisute/Masashi Ono @akisutesama

@yuroyoro contextFromA:B:とするのが良いです。なぜと言われるとAppleがCocoaの命名則を定めているってのと、名前でメモリを管理する言語なんでってのと、それから外れると遠慮なく踏み潰される、そういう文化がある、としか言いづらい。

2011-08-05 12:25:50
しいたけ @yuroyoro

@akisutesama なるほ。なっとくした。スコープとかスタックって概念と名前が結びついてるのね

2011-08-05 12:26:37
akisute/Masashi Ono @akisutesama

@yuroyoro そんな感じっす。何せ元がCなんで言語機能が弱く、パッケージもないと。厳格な命名則を使わないといかん、ってなもんなのです。最近はずいぶんコンパイラが頑張ってくれてますけど。

2011-08-05 12:34:43
文殊堂 @monjudoh

Objective-Cで名前が長くなる問題はそれぞれの名前が使われる範囲が広くなりがちだからとかあるんじゃねーの?って気はする。

2011-08-05 12:24:50
文殊堂 @monjudoh

命名則がグローバルなのかも。ある範囲ではこう、ある範囲ではこうって、やってけば短くなおかつそこを扱う人間にとっては自明な名前付けが出来やすいと思うが、全体で使われる命名則がガチガチだとそうもいかない。

2011-08-05 12:29:24
文殊堂 @monjudoh

Objective-Cの命名則には現状制約があるため仕方なくというのが多分にあると思うので、現状従うが良いものとして全肯定する気にはなれないな。例えば、クラス名にプレフィックス付けるなんてのはただ名前空間がないって事の裏返しに過ぎない。

2011-08-05 12:35:12