第39回
プログラミングの周辺事項(2)~きれいでわかりやすいソースとは?

4.シンボルを冗長に

変数や記号定数などのシンボル名を冗長なものにした方が、その役割を明確にできます。あまりに記号的すぎる命名は、意味や役割を判断するのに時間を要します。

わかりやすいシンボル名を

Cでは、シンボルをできるだけ簡潔な名前にするのが通例のようになっています。

関数名もstrcpy(string copy)、fopen(file open)など元の言葉を切り詰めたものとなっています。そのため『変数名は小文字で、できるだけ簡潔に略す』のがかつての通例でした。たとえば、Member's nameはmname、number of itemsはnumitemあるいはnitem――といった感じです。記号定数は大文字で、MAXIMUM NUMBER はMAX_NUMのように切り詰めていました。

こういった切り詰め表記は、Cがシンプルな命令語を用い、{}や()を使って非常に簡潔で記号的なソースコードを書ける言語であることに由来していました。また、こうすることによってソースファイルのバイト数が少なくなり、過去の非力な(CPUの処理能力が低く、メモリも少ない)ハードウェアでの処理にも対応できていたのです。

しかし、CPUの処理能力が向上し、広大なメモリ領域を扱えるようになった現在では、ソースコードを無理に短くする必要はありません。無理に切り詰めて意味をわかりにくくするより、長くなってもよいからわかりやすいシンボル名とすることの方にメリットがあります。

ハンガリアン記法と組み合わせる

変数名では、その型を示すプリフィックス(前置記号)を付加するハンガリアン記法 ※4 を用いて、さらにわかりやすくするのが一般的です。

たとえば、intNumberOfItemsあるいは「_」を区切りに使ってi_Number_Of_Itemsのような感じです。

こういった表記法はオブジェクト指向言語のC++で採用されましたが、今ではCでも同様の表記法を使ってソースコードをわかりやすくすることを推奨します。

本来のハンガリアン記法とは、型だけでは区別できないシンボルの性質(時刻、通貨種別、座標値など)を明確にするために接頭辞を用いる方法で、これを「アプリケーションハンガリアン」と呼びます。一方、型を示す語を接頭辞とする方法は「システムハンガリアン」と呼ばれ、両者は明確に区別されます。現在一般的に知られているのは、後者のシステムハンガリアンです