CODE COMPLETE 上 第7章 高品質なルーチーン 7.3良いルーチーン名

7.3良いルーチーン名

ルーチーンが行うことをすべて説明する

ルーチーン名には処理の内容すべてが分かる様な名前をつけなければならい。

例えば、環境変数の数をカウントして昇順に並べて出力する関数だとしたら、

CountEnvTotal()では不十分でCountEnvTotalAndSortAscending()の方が関数の処理を把握できる。しかし、冗長で稚拙に感じる。

そもそも、関数の中に二つの処理を混ぜると分かりにくい関数名になりがち。

関数一つで一つの処理を行う様にしよう。

 

意味のない動詞、曖昧な動詞、どっちつかずの動詞を使わない

例えば、 ProcessInput()、OutputUser()という名前からは、なんらかの入力を処理するんだろうなとかユーザの情報を出力するのかなぐらいの情報しかない。

こういう薄い名前を使っているときは、関数を細分化しすべてのルーチーンが目的化される様に構造を見直すべき。

 

ルーチーン名を数字だけで区別しない

OutputUser1(),OutputUser2()とかは絶対したらだめ。もってのほか。

 

必要な長さのルーチーン名にする

平均して最適なルーチーン名の長さは9文字〜15文字らしい。

ルーチーン名はオブジェクトと関連することが多いので、オブジェクト名を考慮しながら明確な名前を設定するべき。

 

関数名には戻り値の説明を反映させる

cos(),Printer.IsReady(), pen.CurrentColor()とかは良い例。

 

プロシージャ名には効果的な動詞とオブジェクトを使用する

※プロシージャとは関数みたいなもの。関数との違いについては7.6で説明がある。

オブジェクト自体が呼び出しに含まれるため、プロシージャ名の中にオブジェクトに関する情報が残ってると冗長になる。例えば、document.PrintDocument()とかは冗長。

check.Print()とかは小切手の印刷を連想させるのでグッド。

 

正確な反意語を使用する

add/remove, begin/end, create/destroy, firs/lastとか正確な反意語を意識する。

 

一般的な処理の規約をまとめる

各オブジェクトに一意な識別子を割り当てたが、識別子(id)を返すルーチーンを統一していなかった。例えば、

employee.id.Get()

candidate.id()

dependent.GetId()

各オブジェクトで識別子の取得方法がバラバラになってしまっている。

同じ様な関数は同じ様な形式に統一するべき。