【脱初心者プログラミング】変数名に気を付けよう

プログラミングを行う際、名前に気を付けているでしょうか?

エンジニア界隈で有名な「リーダブルコード」なる書籍があります。

ページの半数(それ以上?)を変数やメソッド名の解説に割いています。
変数に対してだけでそれだけのページを割けるほど重要なことなんだということを主張しているように思えます。
(同じことを角度を変えて説明していたり、少し冗長な部分もあったりしましたが)

読みやすいコードを目指して、明日からでも実践できそうな内容について書いていこうと思います。

 

1.  真偽値を表す変数名に○○Flgは使わない

プログラミング言語には真偽値(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」などどちらを表しているかを示している単語に置き換えられると良いですね。

The following two tabs change content below.

新歩一 正己

初めまして。 新歩一と申します。 現在開発系のフリーランスで4年目となります。 新しいもの好きなので色々開発言語は触っております。 Web関係、業務用システム構築がメインでJava, Javascript, PHP, Pythonを使っております。 オリンピック期間は国外逃亡します。(たぶん)

Related posts