Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

ハンガリアン記法って何だ?

ネタ元:
ハンガリアン記法が倒せない。
ハンガリアンについてつれづれ
どうやらハンガリアンだったらしい

ハンガリアン記法の話題がホットなので便乗してみる。

まず、Wikipediaをご一読いただきたい。シンプルによくまとまっている。
また、明日のデブサミ(俺は参加できませんorz)で公演するJoel Spolskyが執筆しているJoel on Softwareでも、この件について書かれている

以上を踏まえて、ここから先を読んでいただきたい。

Wikipediaから引用する。

論理座標にRelative Positionのrp、絶対座標にAbsolute Positionのapというプレフィックスとした場合、ウィンドウの位置を設定するwindow.SetPosition(rpX, rpY);のような記述は明確に誤りであることがわかる。

どうしてわかる?
それがわかるのは、window.SetPositionが絶対座標を引数として取ると知っている場合だけだ。
それはおそらく、ドキュメントを見れば書いてあるだろう。

ここで、SetPositionの宣言を想像してみよう。こうかな?

まぁまぁ妥当だろう。では、こう書いたらどうだ?

こうなっていれば、ドキュメントを見なくとも、メソッドの宣言を見れば、渡すべきものが絶対座標であることが分かる。どちらが望ましいかは論を待たないだろう。
では、このコードはどうだ?

このapXにつけられたプレフィックスapは何を表わす? 変数の役割か? それとも型か?
これはアプリケーションハンガリアンか? それともシステムハンガリアンか?

投稿日時 : 2008年2月12日 22:12

Feedback

# re: ハンガリアン記法って何だ? 2008/02/13 0:32 Hirotow

個人的にはtypedefを乱用するC++のやりかたの方が嫌い。

# re: ハンガリアン記法って何だ? 2008/02/13 11:48 ゆーち

typedef int AbsolutePosition;
int なクラスを狭い意味で定義しているのと同じですね。
あちきは、OKだと思います。

ハンガリアン表記をとってもわかりやすく打破しちゃっていてGooです。

ま、C++の場合、AbsolutePosition がすでに定義されているかどうかわからないってのが(別の)問題ですねぇ。

# re: ハンガリアン記法って何だ? 2008/02/13 13:04 tatar

良く分からないのですが、Application Hungarian と System Hungarian は明確に区別されるものなのですか?

http://en.wikipedia.org/wiki/Hungarian_notation

It is possible for code using Apps Hungarian notation to sometimes contain Systems Hungarian when describing variables that are defined solely in terms of their type.

のように書かれていますし、Apps Hunagrian の code が時として System Hungarian を含むとしても、それは別にありなのではないでしょうか。ある型が選択されたとして、その型の情報が「全く目的や意味を与えない」ということはないと思うのです。

# 私個人としては、Hunarian 記法は「意味の分かる変数名をつけましょうね」という自戒の言葉だと思ってます。

# re: ハンガリアン記法って何だ? 2008/05/12 8:17 marko

Wikipediaのその例が例としてふさわしくないだけかと。
引数が(rpX, rpY)ってのは問題なく見えるし、この例が誤記で本当は引数が(rpX, apY)だったとしても、これが間違いだとは判断できないですね。

もうひとつの例は分かりやすい例だと思うけどね。

タイトル  
名前  
Url
コメント