2012年9月9日日曜日

メソッド名をどこまで短くするか

ruby を書いていると簡潔なメソッド名や変数名を使うようになる。たとえば load_emails_by_user_id と書くべきところを単に emails とするなど。簡潔なメソッド名を使うのは読みやすくよいことのように思えるが、そうではないこともある。

短いメソッド名を使うということはどういうことかというと、本来書くべきことのうち、コンテキストから明らかな情報をそぎ落とすということになる。この判断を失敗することが多いのが問題なのだ。具体的には2種類の失敗がある。

メソッド名に書くべき単語のうち、「1. コンテキストから明らか」「2.コンテキストからはまったく推測できない」「3.そのどちらでもない」の3つにわけたとしよう。このとき、1 をメソッド名に記載しないのはよい判断といえる。だが実際には 2 のみを書く、という判断をしてしまいがちである。この間違いは非常に多い。上記の例でいうと、emails というのは 2 にあたる。ここだけに注目して emails というメソッド名にしてしまうのはまずい。by_user_id というのはこのメソッドが user クラスの中にあるとすると 1 に相当すると判断してよい。load は微妙なところなので 3 になるとしよう。たとえばビジネスロジック上ファイルからemailsを読む(read)場合がある、としよう。この場合 load_emails とするのが無難となる。もちろん、email をとってくるときは load 以外ありえない、と判断できるなら emails で誤解は生まれない。

もうひとつの失敗は、コンテキストというのは変化するということだ。上記の例で、load 以外ありえないと思っていたのが開発を進めていくうちに read する場合もありえると判明することがある。本当に省略してしまってよいのかどうか(それで将来誤解を生む可能性がないのかどうか)、一寸考えるに越したことはない。



0 件のコメント:

コメントを投稿