【プログラミング】読みやすいコードを書きたいなら名前だけはこだわりましょう

2021年8月5日

こんにちは。今回はプログラミングについて普段思っていることを書いていきます。テーマは「変数名」です。

「変数名」と字に起こすと凄く素朴ですが、私はプログラミングをする上で変数名は凄く重要だと思っています。その理由は変数名の付け方により、プログラムの品質が大きく左右されるからです!ではなぜ品質が左右されるのかを説明します。

プログラムのメンテンナンス性とは

プログラムの品質といってもかなり多くの要素がありますが、変数名が影響してくるのはその中の「メンテナンス性」の部分です。

プログラムは一度作ってリリースしたら終了ではありません。ユーザーの要求の変化に合わせて継続的に機能追加、不具合が発見された場合はバグ修正をしなくてはなりません。一度リリースしたプログラムは継続的に修正し続けなくてはいけないということですね。

そこで重要になってくるのがメンテナンス性なのです。メンテナンス性が低いとプログラムを修正する難易度が上がり、以下のようなことが起こります。

  • 少し修正しただけで、バグが発生する。
  • とにかく修正に時間がかかる。

その結果、ユーザーやエンジニアは以下のような悲惨な状態を迎えることでしょう。

  • 修正が難しいのでユーザーは多額のメンテナンス費用を払い続ける
  • プログラムが不安定になり、バグが起こりやすくなる
  • 修正やトラブルに追われてエンジニアは帰れない!

想像するだけで恐ろしいですよね。メンテナンス性はほんと大事!では、メンテナンス性の重要性かわかったところで、今回の本題である変数名の話にはいっていきましょう。

理解しづらい変数名はメンテナンス性を下げる

結論から述べます。理解しやすい変数名は良い変数名です。反対に理解しづらい変数名は悪い変数名です。それはなぜか。理解しやすい変数名をつけると、プログラムを修正するのが楽になるからです!プログラムを修正する時にまず行うのはプログラムを読んで理解するところから始まります。理解しやすい変数名はプログラマーの理解を助けてくれます。反対に、理解しづらい変数名はプログラマーの理解を妨げる障害となります。

そして変数名はプログラムのメンテンナンス性にかなり影響してきます。というのも、変数はプログラム中の至るところに定義されており、その数もかなり多いからです。プログラムを読む時間の半分は変数名を読んでいる時間だと思います。ですから変数名はかなり慎重につけなくてはいけないのです。

悪い変数名の例

理解しづらい変数名が悪い変数名ということを説明しました。では実例を交えて説明していきましょう。

悪い例1 用途が分からない

用途が分かりづらい変数名は非常に理解しづらいです。どのような値が入るかを確かめるために一番はじめから処理を追っていかなくはなりません。すべて読まないと理解できないコードは、この変数名が原因であることが多いです。以下、実例です。

$flag = false;
$value = 'text';
$isEqual = false;
for($i =0; $i < 10; $i++)

一番目のflag や二番目のvalueはもはや説明の余地がないかもしれません。これだけだと何に使われるのかが全くわかりませんよね。でもこの手のコード、たまに見かけることがあります。理由は何も考える必要がないので、パっとその場の勢いてつけてしまうのですよね。気持ちは痛いほどわかります。後で名前考えよ、と思って結局忘れてしまう。なんてことよくあります。

三番目のisEqualは一見すると良さそうに見えるかもしれません。しかし何と比較するのかが不明確なので、後で読むと分かりづらいと思います。

四番目はプログラミングの入門書でよく見るやつですね。入門書でよく見るので、プログラミング始めたての方のコードでよく見かけます。入門書に書いてあるから問題ないでしょと思いがちですが、これって後から読むとiの意味がわからないんですよね。漏れなくわからない。非常に問題のあるコードだと思うんですよね。個人的に。

悪い例2 言葉の意味がわかりづらい

// 1)変数名を短くしようとして言葉を短縮する
$uriTanBu = '営業部一課';  // 売上担当部署
$

こちらの例は業務系のシステムでよく見かけます。用語がやたら長いので省略してタイピング数を減らそうという試みですね。確かに開発中は短縮した単語を皆で共有しているので、タイピングの手間が省けるという恩恵のみを受けることができて便利なのです。

しかし、年月経って、メンテナンスの担当者が変わってくるあたりで問題発生です。短縮した単語の意味がわからないので急にメンテナンス性が下がるのです。新しい担当者からしてみれば暗号に見えるんですよね。全く理解できなくはないけど、理解するのに凄く頭使ってイライラします。私も過去何度が経験しましたが、そのプログラムは触りたくないと今でも思っています。人にトラウマを植え付ける変数名、恐るべしです!