« [ ironpython / python ] ironpython で MD5 ハッシュ値を算出する | トップページ | Norton AntiVirus 誤作動で Wiki ファイルフルデリ »

2007/02/13

[ programming ] naming

さて、今日は名前付けに関してちょっと愚痴ってみようと思う。名前付けといってもペットや子供のそれじゃなくて、プログラミングにおける変数とかメソッドに対するそれだ。まずはしたの2組のメソッド名を見てほしい。

lcount()
wcount()
count_line()
count_word()

どちらがわかりやすいだろうか?わたしは右側だとおもう。
プライベートの友人も全員右側がわかりやすいと答えた。

いうまでもないことだけど、右側がわたしがつけたメソッド名だ。左側はとある人が「こちらの方がセンスがよく、優れている」と主張したメソッド名だ。これを聞いたときは、心底呆れたよ。

友人に話してみたらある友人はジョークだと思って爆笑し ( すまないがジョークではなく本当にあったことだ )、他のある友人は「旧世代だな」と評し ( まったくその通りだ )、また別の友人は「いつも読みにくいコードばっかし書いてそうね」と酷評した。

メソッド名は、少なくとも外部に公開することを前提としたパブリックメソッドは、そのメソッドがどんなはたらきをするのかおおよその見当がつくものじゃなきゃならない。lcount() でどんなはたらきをするのか想像できるかい?wcount() ってこりゃ何を数えてるんだい?わたしにはさっぱりわからない。一方で count_line() ならば、「たぶん行数とか、並列して走るラインかなにかを数えるんだろう」という推測は容易にできる。count_word() なら、もっと限定した推測 -- こりゃきっと単語の数を数えてるに違いない -- ができる。

もし名前と違う動作をしていたら、「これって要求仕様を満たしてないんじゃないか?」とか「リファクタリングしたほうがいいんじゃないかな?」ということに気付けるわけだ。名前というのはちゃんと考えて、適切につければ要求仕様を満たしているかとかバグの発見にも繋がるとても大切なものなんだよ。

lcount() だとか、機能の推測がさっぱりできない名前をつける命名法が優れているなんて、率直に言って馬鹿としか思えない。こんなものがセンスだというなら、センスなんてクソ喰らえだ。

Explicit is better than implicit.
Readability counts.

Don't Make Me Think! では、「こりゃいったいなんだ?」と頭を捻らせるようなものは作ってはいけないとされている。わかりやすさのほうが、間違ったセンスなんてものよりも遥かに大事さ。

|

« [ ironpython / python ] ironpython で MD5 ハッシュ値を算出する | トップページ | Norton AntiVirus 誤作動で Wiki ファイルフルデリ »

コメント

突然のコメント失礼いたします。
私アライドアーキテクツ株式会社の清水と申します。
この度、エンジニア様の情報を集めたクチコミサイトのスター
トに際しまして、是非ともお力添えを頂きたくコメントさせて頂きました。
このサイトの仕組みは、皆様のブログの記事の中からPHP、パ
ール、JAVA、C言語、HTML/CSS、FLASH、JAVASCRIPT、オラクル、S QL/EJB QL等に関する記事のみをサイトに収集し、
クチコミサイトを作るというものでございます。
何卒宜しく願いいたします。
【説明・登録ページ】
http://www.edita.jp/admin/blogger_regist.php?id=1031&c=0
【お問い合わせ】
support3@edita.jp

投稿: 清水 | 2007/02/27 17時05分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [ programming ] naming:

« [ ironpython / python ] ironpython で MD5 ハッシュ値を算出する | トップページ | Norton AntiVirus 誤作動で Wiki ファイルフルデリ »