̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2015/ 2/23 通巻681号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ハンガリアン記法を使うな - リーダブル・コード(32) 変数名の接頭辞に型の略語を付けるハンガリアン記法があります。 たとえば、 合計を意味する変数には、nTotalPrice のように int 型を表す n を付けた 名前にします。 ハンガリアン記法を使うメリットは、変数名から変数の型がすぐに分かること です。 ハンガリアン記法を使わなければ、変数を宣言している関数の始めの 方にあるコードを探さなければ、変数の型は分かりません。 ですので、 ハンガリアン記法を使う方が効率が良いと判断されるでしょう。 略語で名前も 短くなるのでコンパイラーにある名前の最大長の制限に悩むこともありません。 unsigned int 型は ui、32ビット整数は dw (double word)、浮動小数型は f、 論理型も f(または b)、ポインター型は p、文字列型は lpsz(または s) となります。 しかし、ハンガリアン記法に使うには、型の略語を覚えている必要があります。 始めのうちは n は int 型というのは覚えられるでしょう。 しかし、型が 異なれば略語も変えなければならないと判断することでしょうし、見た目だけ からハンガリアン記法に統一しなくちゃいけないから略語を省略することが 許されないという空気も生まれますから、どんどん略語が増えていきます。 マイナーな略語が付けられた場合、変数名からその意味が分からないことが よくあります。 自分勝手な熟練者なら、略語を覚えていて当然と主張する かもしれませんが、流派が多くありますし、覚えるに値するほど有用ではない から覚えられない人が多いと考えるべきです。 変数の型がすぐに分かったとしても、ほとんどのケースで、その情報は役に 立ちません。 コードから必要な情報を得るときに、そもそも型を知らなくても 十分に情報が得られることがあまりに多いのです。 たとえば、変数名が nTotalPrice ではなく TotalPrice であるコードに対して、合計がどのように 計算されているかを知りたいときに困るでしょうか。 逆に不必要な n がとても気になってしまう副作用があり、精神衛生上よくなく 開発効率が下がります。 もちろん、接頭辞が n か ui のどちらの型であるかの 情報が知りたいケースもあるでしょう。 しかし、レアケースなのです。 また、ハンガリアン記法は、宗教争いを生みやすく、コーディング ルールで 統一しようと決められることが多くあります。 こうして多くのルールが決めら れると、コードを書くのが非常に効率悪くなります。 コーディング レビューも 略語のあら捜しに時間を取られ、もっと必要なことがチェックできなくなります。 もちろん、プロジェクトの後半ではマスターしていることでしょうから上達した と感じるでしょう。 しかし、多くの流派があるためプロジェクトが変わると 学びなおさなければなりません。 こうしたことから、Wikipedia にもあるように、最近では使われなくなりました。 (見た目もかっこ悪いですし。) Windows プログラミングでは積極的に ハンガリアン記法が使われていましたが、それは昔の話。 マイクロソフト内でも 反乱がおき、現在の.NET Framework の命名規則では採用されていません。 ちなみに、考案者であるチャールズ・シモニー氏が主張する本来のハンガリアン 記法は、型ではなく単位を接頭辞を付けることで、式の中で単位の違いに気づき やすくしようとしたことを目的にしています。 型の違いは単位の違いと違って コンパイラーで検出できるので、人間がやることではないですね。 前者を アプリケーション ハンガリアン記法、後者をシステム ハンガリアン記法と 呼んで区別していますが、どちらも略語であることには変わりありませんので、 単位に気を付けるケースがよほど多くない限り、ルールにするべきではありません。 参考 http://ja.wikipedia.org/wiki/ハンガリアン記法 http://local.joelonsoftware.com/wiki/間違ったコードは間違って見えるようにする (http://www.joelonsoftware.com/articles/Wrong.html の和訳) 注目ニュース 一覧 ◇ その発想はなかった! マウスの中にPCを詰め込んだ マウス一体型PC 開発中。 http://nlab.itmedia.co.jp/nl/articles/1501/23/news128.html … CPU が ARM なので、Windows ではない? ◇ HTML5利用のスマホアプリを開発できる Monaca for Visual Studio。 http://k-tai.impress.co.jp/docs/dotbiz/news/20150218_688839.html … 無料の Visual Studio Community なら Monaca も無料。 ◇ Google Chrome で閲覧中のWebページのアウトラインを表示する HTML5 Outliner。 http://www.forest.impress.co.jp/docs/review/20150213_688087.html … 逆に、HTML5 のアウトライン機能がいかに普及していないかが分かる。 ◇ UQがWiMAX 2+で無制限プラン復活、解放を謳う新施策。 http://k-tai.impress.co.jp/docs/news/20150115_683960.html … お高いプランでは、今後も容量制限なしを約束。 ◇ ソニー、メガネ型端末 SmartEyeglass をアプリ開発者向けに発売。 http://japan.cnet.com/news/service/35060534/ http://game.watch.impress.co.jp/docs/news/20150210_687635.html … 10万円もするし、表示がしょぼい。 ◇ 値上げはなかなか難しい。ビジネスライターという仕事。 http://blogs.bizmakoto.jp/toppakoh/entry/21243.html … 値下げ要求を受け入れたら絶対に上がらない。 ◇ LEDよりも省エネで明るいという次世代照明がなかなかブレイクしない理由。 http://bizmakoto.jp/makoto/articles/1502/10/news045.html … 少し性能が良くても買い替えにはならない。 ◇ YouTuberがどれだけ稼いでいるのかまとめてみた。 http://bizmakoto.jp/makoto/articles/1502/09/news029.html … 株で儲けました、という一部の運が良かった人と同じ。 ◇ Windows 10プレビュー。タブレットユーザーから一言、言いたい。 http://techtarget.itmedia.co.jp/tt/news/1502/08/news01.html … タブレットで使うときの機能も充実。 ソフトウェアデザイン館 Sage Plaisir 21 ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm