概要
- 命名は最初1語のみで行うと保守性が向上する。
という持論、「One-word Naming」の紹介です。
嬉しいこと
- 短くて意味の伝わりやすい名前をつけられる。
- プログラムの分割する機会を逃しにくくなる。
内容
下記の3ステップで説明します。
- 1語のみで命名する
- 確認する
- 調整する
1. 1語のみで命名する
「1語」の定義は、英語においてスペースで分割され得る要素だとします。1
1語で、しかし内容が伝わる様に最善を尽くして命名します。
すると
- 修飾語でない語
- 具体的な語
を選ぶことになります。
例えば
user_name
は2語ですから、1語減らします。
user
はnameを修飾する語ですから
name
がより適切だと考えます。
「ユーザの名前」であり、「名前」ではありますが、「ユーザ」ではないのです。
他にも
- fibonacci, sequence, number, term
- article, body, text, html
- output, response, json, stream
それぞれどんな場面なら選択されそうな1語でしょうか?
常に適切な一語を探すことで、対象の本質を理解することに繋がると思います。
2. 確認する
1語で十分に意味が通じるか?と考えます。
Yesなら1語で命名は完了とします。
Noの場合は言葉を増やす必要があります。
3. 調整する
前項で、1語では不十分だった場合。
周辺を分割して、命名する対象を増やせないか検討します。
(すぐ名前を長くしたくなりますが、こらえます。)
ユーザ名の例を再び取り上げます。
name
では読み手にとって不十分だとしましょう。
例えば、User
型と、その属性2としてname
を定義することもできるはずです。
typedef struct { char name[30]; } user;
class User
attr_reader :name
def initialize(name)
@name = name
end
end
data User = User { name :: String}
分割することで、一度に考えるべきことを減らせます。
名前も短い方が理解するのは楽です。
もちろん、分割することが常に望ましい結果をもたらすとは限りません。
一般に、保守のしやすさだけがプログラムに求められる性質では無いからです。
しかし、分割は面倒で、それゆえ適切なタイミングを逃しやすいです。
コード量が増えていくほど、更に面倒になります。
ですので、命名の度に分割の可能性を検討できることは
One-word Namingの良さだと考えています。