識別子の命名規則の 1 つであるハンガリアン記法の紹介をします。Microsoft が提供する Win32 API で利用されていたためかつては使われることが多かったですが、現在ではあまり推奨されていません。 ここではアンチパターンの 1 つとして紹介します。
s
を付けるp
, lp
を付ける2022 年現在では、ハンガリアン記法を導入することはあまり推奨されていません。以下に、その理由を列挙します。
静的型付け言語でコードを記述し、開発環境として IDE (統合開発環境) を利用していれば、各変数の型が何であるかはツール上で簡単に確認することが出来ます。 多くのモダンなエディターでは、変数にマウスカーソルを当てれば、ツールチップで型に関する情報が表示されます。 そのため、変数名に型に関する情報を追加する意味はあまりありません。
環境によってはハンガリアン記法を利用する場合もあります。
interface
の頭の I
などただし、特に考えもせずに利用して良いモノでは無いです。『goto 文も必要な場合がある』というのと同じく、一定の技術レベルがあり、必要性を判断できない場合には利用しない方が良いでしょう。
ハンガリアン記法をハンガリアン記法だと認識して利用している場合にはまだ良いですが、そうとは気付かずに利用している場合もあるため注意が必要です。 明確にコーディング規約に明記されているわけでは無く、実装者の手癖でその様な命名を行っている場合です。 いくつか例を紹介します。
class
名に Class
とつけるclass
名の末尾に Class
とつける行為は、事実上のハンガリアン記法です。 構造体の末尾に Struct
とつける行為も同様です。 何らかの分類 (class) を取り扱う class
であれば問題ないですが、そうでない場合には避けたほうが良いです。 少なくとも class
であることを明示するために利用することは避けるべきです。
Function
や Command
を付けるこちらも同様です。関数名には『○○をする』と明記されているはずなので、そこに更に Function
とつけるのは冗長です。 関数が関数であることは宣言した箇所でも、呼び出す箇所でも、文法上自明な場合が多いです。 ただし、アーキテクチャの1つとして Command
と明記する場合は例外です。