【リーダブルコード】名前に情報を込める
※ 下記のリンクにある本の韓国語版を読んで簡単に整理しました。
名前に情報を込める
特定の単語を選ぶ
「名前に情報を込める」ための一つの方法は、非常に具体的な単語を選び、意味が曖昧な単語を避けること。
✖️ 一般的すぎる名前
void getImages() {}
getImages
という名前では、「画像を取得する」ことは分かっても、どこから取得しているのか(デバイス内、ローカルキャッシュ、データベース、インターネットなど)は分からない。
たとえばインターネットから取得するのであれば、fetchImages
のようにより具体的な名前の方が伝わりやすい。
✖️ 曖昧なメソッド名
class VideoPlayer {
void stop() {}
}
stop
は一見して問題ないように見えるが、停止状態から再開可能な動作であれば、pause
や resume
の方がより適切。
単位を含む変数名
変数が時間やサイズのような「量」を示すのであれば、単位を明示することで誤解を減らせる。
✖️ 単位がない例
void timeout(int delay) {}
この delay
が「秒」なのか「ミリ秒」なのかは、名前だけでは判断できない。
✔️ 単位を含めた例
void timeout(int delayMs) {} // ミリ秒
void timeout(int delaySecs) {} // 秒
void fileSizeLimitCheck(int size) // ✖️
void fileSizeLimitCheck(int sizeMb) // ✔️
void fileSizeLimitCheck(int sizeKb) // ✔️
変数の意味を明確にする名前
その変数が何を表しているかが重要な場合、意味がより具体的に伝わるように名前を工夫する。
// ✖️ 平文のパスワードかどうかが分からない
String password = ...
// ✔️ 平文であることが明確
String plainTextPassword = ...
// ✖️ エンコードされているか不明
String data = ...
// ✔️ URLエンコードされていることが明確
String dataUrlEnc = ...
略語や省略形の注意点
新しくプロジェクトに参加したメンバーが名前の意味をすぐ理解できるかどうかが重要。
そうでないなら、その名前は改善の余地がある。
// ✖️ 初見では意味不明な略語
ABMController // AdminBoardManageController の略
元のチームメンバーには通じるかもしれないが、初見の人には分かりづらく、学習コストが増すことになる。
略語は便利そうに見えて、実は可読性を下げる要因になり得る。
第2章を読んだ感想
第2章は具体的な例と丁寧な説明で、とても分かりやすい構成になっていた。
読んでいるうちに「これ、昔自分もやってたな…」と気づかされることが多く、思わず感心したり反省したりの連続だった。
特に「単位を変数名に含める」という考え方は、それまでほとんど意識していなかったが、
意識し始めてからは、自分のコードの曖昧さが目に付くようになり、直したくなる衝動に駆られた。
名前付けを丁寧に行うことは、バグを減らし、コードの品質を高める最もシンプルかつ効果的な方法だとあらためて実感した。
そのためにも、違和感があるたびに立ち止まり、不便さを乗り越えてでも、よりよい名前をつける姿勢を大切にしたいと思う。
Discussion