ネーミングのスキルとは何か?
ネーミング(名前付)とそれらの関連付けはソフトウェア開発そのものである。システム設計の技術的、手法的進歩はネーミング手法の進歩と言っても過言ではない。例をあげるとデータ辞書、ERモデル、オブジェクトモデル、ドメイン駆動といった形で進化していった。ネーミングにはプログラマーのドメインへの理解力、英語力、概念や考えを端的な言葉に変える能力が如実に反映される。
ネーミングのスキルがないとどうなる?
ネーミング能力が低いと以下の問題が発生する。
- システムの設計品質がどんどん劣化していく。
- クラスやメソッドの抽出精度が低くなり、結果としてメンテしづらいコードになる。
- 語彙に対する感度が低いため、ある程度質の整ったライブラリやフレームワークを早く理解できない。
ネーミングのスキルの高めかた
楽な方法はないが、他の創作物同様、優れた成果物を研究するによって質やセンスを高める事ができる。
具体的な方法を以下に示す。なお、ドメイン層で使う名前の決定方法についてはドメイン駆動設計に譲る。
- OSやアプリを言語設定を英語にする。: UI系クラスに出てくる名前を定義するのに必要な用語を覚えることができる。また、開発しているアプリと似たアプリが存在する場合、ヘルプも含めてその中で使われている各用語が参考になる。
- Rest APIクライアント等、非UI系クラスについてdashから参考になりそうな名前を検索する。:参考
- オープンソースで作られたアプリを参考にする。同じくUI系クラスの命名方法についてヒントを得ることができる。
普段からネーミングを意識しよう
ネーミング能力は他とは違って、なんでこんなクラス名、メソッド名か考える、開発対象のシステムで使われる用語に気をつける等、業務中にちょっと注意する事で少しずつ向上させる事ができ、かつ品質に影響を与えることができる数少ない能力である。
参考文献
命名のプロセス
実装パターン-ケント・ベック
オブジェクト指向方法序説基盤編 - ジェームズ-マーチン
モデルとプロセスをめぐる冒険 - 橋本 隆成