C#リーダブルコード #19_意図が明確な名前を付ける

当サイトではアフィリエイト広告を利用しています。

リーダブルコード
Subway Station in Munich, Germany. Train coming in. Strong Motion Blur on Train and People, no recognizable Persons.

今回は意図が明確な名前を付けるというお話をしていきます。

1.1   BAD:どんな日付を求めているか分かりづらい

次のような現在日時をチェックするメソッドがあったとします。

//意図が明確な名前を付ける
//BAD:どんな日付を求めているか分かりづらい
private bool DateCheck(DateTime date)
{
    return true;
}

DateCheckというメソッド名では現在日時をチェックするということがわからないし,dateという引数名では,現在日時を求めているということが理解できません。

1.1   GOOD:現在日時を求めていることが分かる

次のように,CurrentDateCheckやcurrentDateという名前にすることで,現在日時を求めていることが理解できます。

//GOOD:現在日時を求めていることが分かる
private bool CurrentDateCheck(DateTime currentDate)
{
    return true;
}

1.1   クラス分割がうまくできている場合は例外

クラス分割がうまくできている場合,例えばCurrentDateクラスの中にあるdate変数であればそれが現在日時であることがわかるということはあるので,うまくクラス分割ができている場合はこの限りではありません。そうではなく,画面クラスなど,色々なクラスを使っている中で,date変数としてしまうと,「何の日時?」となってしまうので,その辺りは考慮してください。

1.2   IdやNameも注意する

IdやNameという命名も,何のID?,何の名前?ということになるので,IdはProductIdやNameならPorductNameなど,どういった用途で使うかを付けた方がいいです。これはC#だけでなく,データベースの列名を付ける時も同じですね。例えばProductテーブルにIdという列があるのに,StockテーブルにもIdがあり,実態はProductIdとStockIdという意味で使用する場合は,DBの列名にもProductIdやStockIdと命名した方がよいです。そうすれば,それをC#で取り込んだ後も,ProductIdとStockIdという命名で全体が動作してわかりやすいですね。DBの場合テーブルが別であれば,同じ名前でも命名できますが,同じ用途で使用しない場合は,別の名前を付けた方が,アプリケーション全体が安定します。