Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

不適切な命名

概要

レビュー指摘「不適切な命名」について
Javaの話です

内容

「不適切な命名」のコードは可読性が下がります。

項目 内容 不適切な理由
汎用的な名前 param,obj等広い意味を表す名前 用途を読み取れない
日本語のローマ字読み helloではなくkonnichiwa等、日本語ローマ字の命名を使用する 一般にプログラムの命名は英語。日本語ローマ字は名前が長くなりがちな上に、同じ用語を複数の綴りで表せるため人によって表記が揺れやすい
独自ルールの略語 独自ルールの略語で命名を行う 本人や一部のプロジェクトメンバー以外には読みにくいコードになる
システムハンガリアン記法 strMessage,intIndex等変数の型の情報を名前に含ませる Javaに関してはIDEでの開発が前提になることがほとんどであるため、コードリーディング中に型が不明になることがほとんどない。
・変数の型を変更した場合に変数名まで変更する必要が出てくる
・独自定義のクラスを作成するたびにプリフィックス名を考える必要が出てくる
メタプログラミングに対応できない
ハンガリアン記法を最初に推進したマイクロソフト自身が.NET Frameworkではハンガリアン記法を禁止している
キャメルケース以外の命名 キャメルケース(例:playerName)以外の命名になっているもの。
例えばスネークケース(例:player_name)やそもそも規約にすらならないようなもの(例:playerNAME)
命名ルールを統一することで可読性を上げる。Javaではキャメルケースが一般的なためこれに合わせることで他の技術者にも読みやすいコードとなる。個人的にはスネークケースが基本のRubyも使っているのでどちらでも違和感はないのですがその言語の主流に合わせるべき

サンプルコード

package review.ex1.incorrectname;

public class MusicPlayer {
  // 好ましくないフィールド名。名前が曖昧
  // private Music obj;
  // 好ましくないフィールド名。日本語のローマ字読み
  // private Music ongaku;
  // 好ましくないフィールド名。独自ルールの略語
  // private Music ms;
  // 好ましいフィールド名
  private Music music;
  // 好ましくないフィールド名。ハンガリアン記法(変数名に変数の型情報を含ませる)
  // private String strPlayerName = "";
  // 好ましくないフィールド名。キャメルケース以外
  // private String play_name = "";
  // 好ましいフィールド名
  private String playerName = "";

  MusicPlayer(Music music, String playerName) {
    this.music = music;
    this.playerName = playerName;
  }

  // 好ましくないメソッド名。名前が曖昧
  public void doing() {
    System.out.println("音楽を再生する");
  }

  public void play() {
    System.out.println("音楽を再生する");
  }

  public static class Music {
    // 略
  }
}