こんにちは、音ゲーマーのKenです。
3月に大洗に旅行に行きました。美味しかったです(あんこう鍋)。
今回は新人プログラマーさん向けに、綺麗で分かりやすいプログラムを書くためのワンポイントをお伝えします。
ポイント
タイトルが全てですが、これだけでは分かりづらいと思いますので、実際に例を見てみましょう。
指針
変数名が命題になっているかを確認するためには、以下の指針が有効です。
実例を比較してみましょう。
変数名の場合
ソースコードと、それを英文のように読んだ場合の和訳を付けました。コードはJavaのつもりで書いていますが、他の言語に読み替えていただいても構いません。
【良い変数名】
if(canDownload){ download() }
download() を実行する
もし ダウンロード可能なら
【良くない変数名】
if(downloadFlag){ download() }
download() を実行する
もし ダウンロードフラグならこれは文章になっていません。
if(downloadFlag == true){ download() }
download() を実行する
もし ダウンロードフラグが true なら
解説
downloadFlag という変数名では true と false のどちらがダウンロード可能なのか、あるいは既にダウンロードしましたというチェックなのか、変数名から推測できません。これは変数名が「命題」になっていないからです。変数名自体が「命題」になっていれば、その変数の意味が明確になります。
メソッド名の場合
このルールは boolean型の戻り値を返すメソッドにも適用できます。あるオブジェクトが、処理の準備ができている状態かどうかを返すメソッドを考えてみましょう。
【良いメソッド名】
public boolean isReady() { return this.status == READY; }
【良くないメソッド名】
public boolean checkStatus() { return this.status == READY; }
解説
メソッドの内容は「 this.status をチェックしてREADYかどうかを返す」なので、一見 isReady() でも checkStatus() でも良いように思えるかもしれません。ですが、やはり「命題になっているか」という観点でみると isReady() のほうが適切です。
今回は以上です。
変数名を少し工夫するだけで、ソースコードがとても読みやすくなりますので、ぜひ取り入れてみてください。
それでは。