日々常々

ふつうのプログラマがあたりまえにしたいこと。

いい名前が思いつかないときは変な名前をつける

プログラミングは名付けの連続です。しかし、いつも「いい名前」が見つかるわけではありません。付けたときはいい名前と思っていても、時間が経って知識が増え、ブレイクスルーが起こると、それまでいいと思っていた名前も途端に微妙に感じたりします。

このように「いい名前は見つからない」とか「どうせ変わる」とか思うと、名前を考えるのが無駄に感じたりしなくもありません。でも名前は重要です。名前の重要さは割愛します。プログラマが知るべき97のこととかを読んでください。

名前を付けるときは、誤魔化さずに付けるように意識しています。と言うと、「いい名前をスパッと決められている」ように捉えられるかもしれませんが、そうではないです。私は名付け能力の低さには自信があります。それはさておき、誤魔化さずに付けると言うのは、「誤魔化しなしに理解できていないことがわかる名前を付ける」と言うことです。この名前を「変な名前」と呼んでいます。この手の名前は大抵長々としてたり、回りくどかったり、ドメインモデルなのにユビキタス言語にない言葉だったり、システムハンガリアンだったりします。でもその名前をつけます。誤魔化した名前を付けたい衝動にしばしば駆られますが、意識が保ててる間はなんとか抑え込みます。衝動を抑えきれないときは、もっと変な名前にします。例えば hoge とか xxx とか。

ここで言う「誤魔化した名前」の典型的なものとしては XxxInfo とか XxxManager などが挙げやすく、その同系統のものです。同系統と言うのは「短くて、それっぽくて、でも何も表していない」もの。そんな名前こそが「誤魔化した名前」です。短い名前が適切な場合もありますが、いい名前が思いつかないときの短い名前はよくありません。いい名前が思いつかないのに短い名前を付けてしまうと、いい名前がつけれていないと言う情報が消え去ります。そして短いものは埋もれ、スルーされがちです。

一番最初に名前を付けるのは、そのコードを初めて書く瞬間です。初期理解です。いい名前を付けられる準備はできていなくて当然とも言えます。ブレイクスルーは必ず起こります。名前が変わらないとしたら、よほど最初から理解できていたか、名前変更をサボったかのどちらかな気はします。ですが最初に名前を付けるのは、もっともその対象のことだけを考えている瞬間でもあります。俯瞰した理解は持っていないかもしれませんが、間違いなく名付ける対象のことだけを考えています。その時の知識や感覚が失われるのは勿体ない。いい名前はそれを表現できますが、それが思いつかないのであれば、せめて「変な名前」でも情報を残したいとか思ったりしています。

まとめ

いい名前が思いつかないときにシンプルな名前を付けるとそれっぽく見えてしまいます。これは避けるべきです。長々とした変な名前をつけるのがいいのではないかと思っています。目に入るたびに「もっとマシな名前があるんじゃないか」と思わせるくらいが丁度いいです。

蛇足

もちろん、コードが自分の手を離れる前には掃除します。そのときは誤魔化した名前にするかなー。万人に受け入れられるとは思ってないし、前提条件も多いですしね。