ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  396  : 記事  0  : コメント  1030  : トラックバック  66

ニュース

さて、今年の秋は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

ネタ元

私もハンガリアン記法は好きではありません。
理由は「ほとんどのハンガリアン記法は既存の型のことしか考えてないから」です。
とある ASP.NET のプロジェクトではハンガリアン記法が採用されていたのですが、こんなルールがありました。
  • ユーザーコントロールのプレフィクスは uc
  • カスタムコントロールのプレフィクスは継承元のコントロールと同じ
ハンガリアン記法とは、一目で型を知れるのが利点なんじゃないんでしょうか?
型を知れば、振る舞いや扱い方を想像することができます。
uc とついてればユーザーコントロールなのは理解できます。
具体的にはどんな型なのでしょうか?役割は?ボタンですか?リンクですか?
そこから振る舞いや扱い方を想像できますか?
カスタムコントロールを継承元と同じプレフィクスにしたら、混在したときにどうするんでしょうか?
どう考えてもハンガリアン本来の役目を果たしているとは思えません。

コントロールから抜けて、新規にクラスや構造体を作ったとします。
そのつど、プレフィクスを決めなければなりません。
時間の無駄です。
既存のデータ型しか扱わず、それだけで成り立っていたころはハンガリアンは便利だったかもしれません。
しかし、型を増やせば増やすほど崩壊していくハンガリアンは、現在主流のオブジェクト指向やコンポーネント指向と親和性が低いように思われます。

ネーミングルールやコーディング規約は採用する技術によって様々です。
たとえば私が最近勉強している Ruby では変数の最初の文字が @ だと private フィールドになります。
最初の文字が大文字だと定数として扱われます。
そんな環境ではさすがに @m_Name とかしませんよね?

コーディング規約というものは、技術を選定したときにたいてい新たに書き起こされます。
そんな時にわざわざ別の技術で使用していたルールを持ってくるのは不自然です。
せっかく新規に技術を選定したわけですから、社内標準ではなく、もう少し目を広げて一般標準を取り入れてほしいものです。
いくら、それまで社内標準だったとはいえ、教育コストがそんなに低くなるとは思えません。
デファクトスタンダードを採用することによって、それこそ中途参加者や新規参入者への教育コストが低くなると思います。
そもそも、ほとんどのハンガリアン利用者は、それがデファクトスタンダードだったから利用しはじめたんじゃないんでしょうか?

つまるところ、ハンガリアンがどうこうではないのです。
技術を取り入れる際に、仕様や手法だけでなく文化も取り入れようということです。
ほとんどは、これから文化を作り上げるパイオニアではないのです。
あらゆる会社がデファクトスタンダードを利用すれば、きっと幸せです。理想論ですが。

[追記]ここでいうハンガリアンはいわゆるシステムハンガリアンを取り上げています。
[追記]とか言っていましたが、自分がシステムハンガリアンを好んで使用していました。
投稿日時 : 2008年2月12日 18:36

コメント

# re: ハンガリアンについてつれづれ 2008/02/12 19:35 R・田中一郎
基本的に賛成です。

しかし、以下を見れば分かると思うのですが、ucAmount とつけるのはアプリケーションハンガリアン記法的にはアリということになりますね。

http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95

# re: ハンガリアンについてつれづれ 2008/02/12 20:02 siokoshou
型を表すハンガリアンは間違って伝わったほうのハンガリアンです。
http://local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B

#明日ジョエル氏はデブサミで講演しますね。


# re: ハンガリアンについてつれづれ 2008/02/12 20:35 THREE-ONE
>R・田中一郎さん
> ucAmount とつけるのはアプリケーションハンガリアン記法的にはアリということになりますね。
そうなんでしょうか?
私にとっては何の役割も果たさず、型よりもさらに広い範囲なのでアプリケーションハンガリアンとも受け取れません。

>siokoshou さん
> 型を表すハンガリアンは間違って伝わったほうのハンガリアンです。
一応、存じ上げております。
「スタンダードを取り入れようよ」という趣旨のため、不幸にも間違って広がってしまったシステムハンガリアンをハンガリアンとして取り上げております。

# アプリケーションハンガリアンを積極的に採用しているプロジェクトってどんだけあるんだろう???

# どうやらハンガリアンだったらしい 2008/02/12 20:51 へぼろっぱぁ
どうやらハンガリアンだったらしい

# re: ハンガリアンについてつれづれ 2008/02/12 21:49 やじゅ
http://blogs.wankuma.com/jeanne/archive/2005/05/23/12306.aspx
http://www.microsoft.com/japan/msdn/community/gdn/ShowPost-8478.htm


# ハンガリアン記法って何だ? 2008/02/12 22:13 Out of Memory
ハンガリアン記法って何だ?

Post Feedback

タイトル
名前
Url:
コメント: