プログラミングを行う際、名前に気を付けているでしょうか?
エンジニア界隈で有名な「リーダブルコード」なる書籍があります。
ページの半数(それ以上?)を変数やメソッド名の解説に割いています。
変数に対してだけでそれだけのページを割けるほど重要なことなんだということを主張しているように思えます。
(同じことを角度を変えて説明していたり、少し冗長な部分もあったりしましたが)
読みやすいコードを目指して、明日からでも実践できそうな内容について書いていこうと思います。
プログラミング言語には真偽値(true or false)を扱うBoolean(bool)値があります。
一時期「〇〇フラグが立った」などでフラグという言葉が流行りましたが、あのフラグです。
その影響か、時々現場のコードでも目にしますFlg。
deleteFlg、removeFlg、updateFlg、もはや単なるFlgとか。。。
なぜよくない?
理由としてはFlgの意図する内容が不明瞭になりやすい為です。
例えば、deleteFlgと変数が宣言してあって処理の中でどのように使われているか想像がつくでしょうか?
「削除する対象かどうかの判定に使う」、「削除処理されたかどうかの判定に使う」、「削除可能かどうかの判定に使う」などなど複数思いつきます。(私がひねくれているだけかもしれません。。。)
何となく複数解釈ができてしまいますし、Flgのon/offの感性が人によって変わってきます。
※ 現場のコードでもon/offの扱いが逆では?というコードは結構な頻度で見ます。
じゃあどうするの?
よりベターな変数の宣言としては以下のようなものが良いかもしれません。
「削除する対象かどうかの判定に使う」= doDelete
「削除処理されたかどうかの判定に使う」= isDeleted
「削除可能かどうかの判定に使う」= canDelete
変数宣言時にcanDeleteと書いてあれば、「どこかで削除可能かの判定処理があってその結果が入る」というのが想像し易くなります。
単なる変数の宣言でも、宣言の仕方で後に続くプログラムの情報を表現できるという事を知っていただけると幸いです。
おまけ
仲間にcheckという変数もいます。(OK、NGがぱっと見分からない)
こういうものも「valid、 invalid」などどちらを表しているかを示している単語に置き換えられると良いですね。