[ 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! では、「こりゃいったいなんだ?」と頭を捻らせるようなものは作ってはいけないとされている。わかりやすさのほうが、間違ったセンスなんてものよりも遥かに大事さ。
| 固定リンク | コメント (1) | トラックバック (0)