2008年3月6日木曜日

システムハンガリアンが止められない.

 早い時間に帰るタイミングを逃しました orz
 さて、そろそろ帰ります.

 が、一言だけ.
 CやVB(.Netでは無い)のコードを見ていると、

  m_FirstName
  p_TmpPath

 とか

  m_szFirstName
  p_strTmpPath

 と言った変数/メソッドの命名をしている人が居ます(と言うか、そう言う命名規則を設けている).

 当然

  m … スコープ → モジュール(メンバかも)
  p … スコープ → プライベート

 や

  sz … 文字列(終端文字付)
  str … 単なるStringの略

 を意味しています.
 私は「m_」やら「p_」やらは使いませんが(※1)、「str」とか「sz」は好んで使っています.
 実際、このblogで極稀に書くコードでもPrefixを付けて書いているはずです.
 
 で、この書き方を会社の人に言わせると「前時代的でダサ過ぎる.そもそもそれってシステムハンガリアン(※2)だしw」となる訳です.
 まぁ、それはそうなんですけどね.
 別に今の言語 + IDEをもってすれば、型もスコープも明確且つ明快に扱える(スコープは若干あれだけど)から、そんなPrefixなんて付ける必要はありませんよね(大方のスクリプト言語除く(※3)).
 …と言うのは頭の中では理解してます.
 が、実際問題としてソースコードをダダ読みしてると、個人的にはこっちの方が楽ですw

 会社でハンガリー記法はやってないんですが、どうにも読み難くて仕方ありません!
 何度読み慣れようとしても、全然頭に入って来やしません!!
 システムハンガリアンまんせ~!!!

 …じゅ、重症過ぎる orz

 元には戻れない体になってしまったのワタシ.
 そんな感じです.
 どんな感じかは不明ですが、システムハンガリアンな書き方よりは明瞭なハズです.

 嗚呼低レベル低レベル.
 前時代的な書き方から抜け出られるのは何時の日か…

/**
 * 2008-03-07 追記
 */
 久しぶりに更新すると、情報が不足しがちになります.
 まぁ、元々情報不足過ぎなんですが orz

※1 「m_」「p_」を使わない → 「Me」「this」の有無で切り分ける
 基本的にメンバ変数やメソッドは「Me」(VB.Net)なり「this」(C++/C#/Java)を使っています.
 ローカルな変数は何も付けず、メンバな変数には「すべて」付記します(無駄が多いw).

※2 システムハンガリアン → 間違ったハンガリー記法
 正しいハンガリー記法はそこまで否定されるものではありません.
 正しいハンガリー記法は、変数の型では無く「データが何を表すのか」を表記します.
 スコープの表記がどうなのかは…調べないと知りませんが orz

※3 IDEのフォローでどうにでもなると言えばなるか…とも思いますが、変数の型すらどうにでもなるスクリプト言語(特にPHP)には、結構システムハンガリアン記法はあってるかと.
 話は少しズレますが、「文系の人はPHPから始めずにJavaから始めましょう」.
 低レベルな文系人間でもこれだけは声を大にして言いたい今日この頃.

0 件のコメント: