プログラムに欠かせない変数の存在ですが、変数名のつけ方一つでもプログラマーの性格や質が出るものです。変数名に「aaa」や「xxx」という名前をつける人はさすがにいないでしょうが、変数名は一見するだけで、どのような用途で使用されるのかが分かることが理想です。

ぱっと見て分かりやすいような、上手な変数名のつけ方の参考例について、ご説明していきます。

変数名には処理内容が分かる名前をつけるのが基本

まず変数名をつける際の基本中の基本ですが、変数名を見てどのような処理で使用するのかが分かるようにしなければなりません。

例えば会員テーブルをアップデートするようなSQLを格納する変数なら「kaiin_update_sql」というような名前をつけておくとよいでしょう。その他の例として、ループ時のカウント用変数であれば「loop_cnt」といった変数名にしたり、テーブルの項目(例:会員テーブルの会員番号)を格納しておくための変数であれば「Tkaiin_kaiinno」とします。

「この名前にしなければいけない」という決まりはありませんが、できるだけ誰が見ても理解できるような名前にしておくことが求められます。

データ型を識別できるようにする

変数には整数型や文字型、日付型などデータ型がそれぞれであります。整数型の変数に文字列データを代入しようとすればエラーの原因になってしまいますので、変数名にもデータ型が分かるような要素を持たせておくと便利です。

例えばInt型(整数型)であれば「I_xxx」、Char型であれば「C_xxx」といったように、変数名の先頭にデータ型を表す文字をもってくることで、一見しただけでデータ型を判別することが可能になります。プログラミングの作業効率を上げるテクニックでもあります。

グローバル変数を識別できるようにする

変数には各モジュール内のみで使用するローカル変数だけでなく、複数のモジュールで共通で使用できるようなグローバル変数を使用することもあります。このグローバル変数もぱっと見て識別できるようになると、プログラマーにとって優しいソースコードとなります。

グローバル変数の場合「XXX」というように大文字英数にしたり、「GLOBAL_xxx」や「PUBLIC_xxx」というような名前にするとよいでしょう。

ハードコーディングを避けるための定数は大文字英数で識別

変数はプログラミングの中で値が変わることが前提ですが、中には値の変わらない定数も存在します。定数はハードコーディングを回避するために利用されることが多いです。

例えばエラー処理において「エラー発生。再度処理を実行してください。」というエラーメッセージを表示させる場合、毎度文字列をソースコード内に記載するのではなく、文字列を事前に変数に格納して定義しておけば、エラーメッセージの変更時には定義している部分のみを修正すればよく、プログラムのメンテナンスが容易になります。
※「面倒くさがりのプログラマーほど効率の良いソースコードが書けるわけ」記事参照

こうした定数は、大文字英数で命名するとよいでしょう。「ERROR_MESSAGE」と記載があれば、一発で定数であると識別できます。変数の初期値代入にて「ERROR_MESSAGE = “エラー発生。再度処理を実行してください。”」と、固定値を格納しておきます。

自分なりのルールづくりをしましょう

これまでご説明してきたような変数の命名規則は「こうしなければプログラムが動かなくなる」というようなものではありません。あくまでプログラマーが独自で決めるもので「こうすれば作業効率が上がるんじゃないか」といったレベルのものです

ですが自分で決めた変数名の命名規則については、プログラム内で共通して守るようにしましょう。ところどころで思いついたように命名規則が適用されていると、逆に混乱を生む要素となってしまいます。プログラム全体で共通規則となっていれば、第三者が見てもわかりやすいソースコードとなります。

コーディング規約があれば規約にのっとって命名する

もしコーディング規約が定められており、その中に変数名の命名規則も記載があれば、規約を順守するようにしましょう。下手にプログラマーの個性を出してしまうと、逆に第三者からは分かりにくいものになってしまいます。

 

おわりに

分かりやすいプログラムを書くためには、変数ひとつとっても様々な工夫を凝らすことができます。変数の定義時には「ただ動けばよい」ではなく、いかに見る人にやさしく、作業効率を高められるかを意識しながら命名していくようにしましょう。

 



【X(旧twitter)でも情報発信中】

Xを最近始めたので、フォローしてもらえると嬉しいです(エンジニア界隈の方はフォローバックさせていただきます)! システム開発に関することや、最新テクノロジーのことなど、世のエンジニアにとって有用な情報を発信してます!

"X" @TECH_KEYSYS