ハンガリアン記法 [part1]

このエントリーをはてなブックマークに追加
176デフォルトの名無しさん:2008/05/10(土) 22:58:57
形容詞じゃないという主張に関しては、
ああ、そういやそうかもなあ、と思った。
だからそれにそって話をしたら叩かれた・・・。
177デフォルトの名無しさん:2008/05/10(土) 23:02:27
fnTexture // クソ
TextureFileName // カコワルイ
texture_filename // まあ普通だな
textureFilename // 俺はこれかな
178デフォルトの名無しさん:2008/05/11(日) 00:49:52
元々は数十KBのメモリ空間にアセンブラやCでガリガリ詰め込んでた頃の
テクニックだよ。
まあとにかくお前ら「実録!天才プログラマー」を入手して
考案者本人の話を読んでみなよ。

この本は他にもBASICを書いていたころのビル・ゲイツとか、PostScriptの開発
者とか世界で初めてスプレッドシートを開発した人とか、今では名前すら残っ
ていない怪しげな「自称天才」とか、いろいろ面白い話やら手書きのメモやら
が載ってるから買って損はない。

訳者がコンピュータ畑の人じゃないので少〜し読みにくいけど。
179デフォルトの名無しさん:2008/05/11(日) 01:10:24
>元々は数十KBのメモリ空間にアセンブラやCでガリガリ詰め込んでた頃の
>テクニックだよ。

そこまではさすがにさかのぼらないだろ
その時代のPC上のASMやCの言語仕様ってのは
変数名は先頭6文字まで識別とかその程度だから
prefixなんかつけてたらかぶっちまう
180デフォルトの名無しさん:2008/05/11(日) 01:17:41
textureFilename = sourceFilename; //OK
textureFilename = sourceDirectoryname; //NG

fnTextureFilename = fnSourceFilename; //OK
fnTextureFilename = dnSourceDirectoryname; //NG

上でも普通は問題ないが、下なら見た瞬間にfnとdnの意味は分からなくても、なにかおかしいとは感じられる。
思考することなく脊髄反射で判定できるので、頭が悪い人には有効だと思われる。
181デフォルトの名無しさん:2008/05/11(日) 01:19:53
ああ、でもよく考えると8086に移りたての当時は
np (near pointer)/fp (far pointer) だけはつけてたな
これがないとときどきわけわかんなくなったw

>>180
その程度のくだらない例しか思いつかないのかよ
頭が悪い人っておまえのことだろ、もう帰っていいよ
182デフォルトの名無しさん:2008/05/11(日) 01:33:50
>頭が悪い人っておまえのことだろ
正解。だから色々、小細工しようとしてます。
周りと比べて明らかにコードを理解する能力が低いって自覚してる。
他人のコード読むときに書き直しながら理解して、後から戻すなんて無駄なこともしてる。
183デフォルトの名無しさん:2008/05/11(日) 13:16:51
たぶんループしてる話だとは思うんだけど、
アプリケーションハンガリアン的なものっていうのは、使っても問題ない場面を
弁えて抑制的に使う分には確かに有用な場面もあるんだよね。

問題なのはフールプルールじゃない、つまり「馬鹿の一つ覚え」的に乱用して
意味不明な記号あふれる読解不能コードを生産する蓋然性があるってことで。
184デフォルトの名無しさん:2008/05/11(日) 13:55:59
アプリケーションハンガリアンの言う所の「prefix」って
別に無理に短縮形にする必要はないんだろ?
185デフォルトの名無しさん:2008/05/11(日) 14:08:04
そりゃおかしい。
短縮しないのならそもそもprefixにする必要もなかろう。
186デフォルトの名無しさん:2008/05/11(日) 15:29:32
何で?
187デフォルトの名無しさん:2008/05/11(日) 15:44:39
プレフィックスが左右で同じかどうか見るだけなんだから
短縮してなくても問題なくね?
188デフォルトの名無しさん:2008/05/11(日) 16:25:52
長いと打つの面倒だろ
189デフォルトの名無しさん:2008/05/11(日) 16:27:16
インテリセンスで
190デフォルトの名無しさん:2008/05/11(日) 16:27:54
プリフィクスにしてもしなくても長さは大して変わらないと思うが・・・
191デフォルトの名無しさん:2008/05/11(日) 18:57:50
文句あるんならJavaでも使ってろよ。
192デフォルトの名無しさん:2008/05/11(日) 18:59:41
??
193デフォルトの名無しさん:2008/05/11(日) 22:36:58
>>179
シモニイがXerox PARCにいてALTOで動くBravoを書いたころ、
ビル・ゲイツはAltair 8800で動くTinyBASICを書いていた。
その3年後、ベル研のカーニハンらによってC言語が公開された。
時代的にはそんなもの。

シモニイはMicrosoftに移る前から独特な識別子の命名規則を
編み出して使っていた。MSに移った頃は
「あのハンガリー人の書くコードの変数名は変わってる」
と噂されていた。
194デフォルトの名無しさん:2008/05/12(月) 01:43:09
それって個人的に使ってただけで公式に普及してたわけじゃないのでわ
195デフォルトの名無しさん:2008/05/12(月) 01:56:20
普及しだしたのはDOSの最後の方のかWINの最初の方のを
作ってたときだったか。
196デフォルトの名無しさん:2008/05/17(土) 23:14:16
今後、登場する言語にはこんな機能がつくようになりますように。
http://www.kaz.appi.keio.ac.jp/~syl/Hungarian/
197デフォルトの名無しさん:2008/05/18(日) 00:53:08
こいつは C でプログラム組めないんだろうな。
198デフォルトの名無しさん:2008/05/30(金) 16:15:25
ハンガリアンチョップ!
199デフォルトの名無しさん:2008/06/18(水) 03:07:07
新しい言語は強いtypedefを持ってるだろ
200デフォルトの名無しさん:2008/06/18(水) 17:00:05
ポインタなのかリファレンスなのか実体なのかってのの判別は、
typedefでは解決できないんじゃ。
201154:2008/08/02(土) 18:27:12
元々も

 「意味が違う情報を保持する変数には違う印を名前に付ける」

が変質して

 「型が違う変数には違う印を名前に付ける」

とクソになって、最後は

 「型と製品と所属モジュールの情報をコード化してすべての変数に付ける」

というありえないgdgd状態に。
202デフォルトの名無しさん:2008/08/03(日) 11:44:00
元々の論文の "type" は変数の種類、分類を表していたのに
変数の型を表していると誤解されたのが原因と聞いてるけど
203デフォルトの名無しさん:2008/12/29(月) 07:45:45
2も見ねーで語るなよwww
204デフォルトの名無しさん:2009/02/21(土) 00:03:21
今度就職した会社は、完全にシステムハンガリアンを採用しているみたいです。

VBのソースなんだけど、、、

cls
fnc
sub
pub
str
CNST_
asp

とか。で、これらを組み合わせて使ってるんだよね。
定数なんか大文字にしているのに、わざわざCNST_付けてるのって意味ない。
205デフォルトの名無しさん:2009/02/21(土) 02:37:30
クラスが全部clsなのとか……。
206デフォルトの名無しさん:2009/02/21(土) 09:00:18
C++でやってた時、m_clsXXXとゆうのは結構あった。
VBだとm_oXXXもしくはm_objXXXが多かったけど。
207デフォルトの名無しさん:2009/02/21(土) 15:44:47
アンチハンガリアンだが、VB6やVBAみたいに
型と変数名の名前空間が分離していないくせに
大文字小文字も区別しないクソ言語使ってるときには
安直に衝突を回避する策として使えることが分かった。
VB.net以降は少しはマシになったのかな?使ってないから知らんけど。
208デフォルトの名無しさん:2009/02/21(土) 17:31:32
>>207
VBの糞仕様は指摘どおりなんだが、>>204みたいな方式は冗長すぎる頭の悪いやり方だよ。
全然有用じゃない。

普通はこんな感じでやれば糞仕様のVBでももう少しスマートにできる

- 自作クラスはcでプリフィクスする。

- enumは使わずに標準モジュールの定数で代用する。

- 基本、変数名に余分なプリフィクス・サフィックスは付けない。

- ただし、他所製のコンポーネントでクラス名と同じ名前を変数名に使いたい場合は
 IDEの流儀に従ってインスタンス名を数字でサフィックスする。
209デフォルトの名無しさん:2009/02/21(土) 18:58:42
VB6時代だと、画面の標準部品は、MS仕様にあわせていたけど
アレはアレで便利だったと思うけどな。

txtHoge <-- テキストボックス
lblHoge <-- ラベル
btnHoge <-- コマンドボタン

まあ、今はやらんけど結局
hogeText
hogeLabel
hogeButton

になっただけなんだ。
210デフォルトの名無しさん:2009/02/21(土) 19:20:01
Java本でhogeButtonみたいな例を初めて見たとき、
なんだ普通の英語の語順で書けばいいんじゃないかと開眼した。
ハンガリー語という仇名には、ある種の皮肉というか悪意がこもってるかも。
211デフォルトの名無しさん:2009/02/21(土) 19:48:39
>>209
既出だと思うけど標準コントロールのハンガリアン表記は結構有用だと思う。

「なんて名前つけたっけ?」って時もインテリセンスを検索的に使えるし。
ベタにTextとか書くと"text"って単語がコントロール名に使いにくくなるし。
英語的にも関係代名詞使った構文みたいな語順になるから意味が頭に入りやすいし。
212デフォルトの名無しさん:2009/02/21(土) 20:10:23
それでもtextTextBoxのほうが好きだ。
自作コンポーネントの変数追加したら、そこだけ浮いちゃうんだろ?
213デフォルトの名無しさん:2009/02/21(土) 20:15:33
>>210
でも先頭に無いと並んで書いた時に読み辛いんだよね
214204:2009/02/21(土) 21:06:10
grep して調べたら、Functionプロシージャなのに、sub〜のプレフィックスが付いてて、もはやルールが崩壊してるんだよね。

しかもその会社は、DBのテーブルやフィールドが全て大文字で、アンダーバーの区切りなし、母音省略で、かなりやりにくいわ。

辞めた前の担当者だけとかだったらいいけど、会社としての方針なら最悪・・・。
215デフォルトの名無しさん:2009/08/06(木) 16:30:26
216デフォルトの名無しさん:2009/09/06(日) 13:27:40
よくある図式

普通のコードの書き方を覚える
↓(窓の壁)
システムハンガリアンを知る

意味わかんねーし糞うぜー
↓(情弱の壁)
アプリケーションハンガリアンを知る

俺も世間も駄目扱いしてたけど実はそうじゃなかったのか?
↓↑(対立)
でもよくよく考えると駄目じゃね?
217デフォルトの名無しさん:2009/09/06(日) 20:32:37
ポインタだけはpHogeとかつけるな。
ppHogeとか付いて無いと分かんなくなる。
218デフォルトの名無しさん:2009/12/23(水) 15:55:55
219デフォルトの名無しさん:2009/12/27(日) 12:00:25
ハンガリー人を右に
220デフォルトの名無しさん:2010/06/01(火) 09:39:15
ダブルハソガリアッ上
221家電.com:2010/06/01(火) 09:45:12
家電.com
HP
http://Kadencom.chochouo.com

222 忍法帖【Lv=1,xxxP】 :2011/05/20(金) 08:58:35.16
保守
223 忍法帖【Lv=4,xxxP】 :2011/07/11(月) 03:37:25.53
test
224 忍法帖【Lv=8,xxxP】 :2011/07/12(火) 07:07:15.89
test
225 忍法帖【Lv=2,xxxP】
窓辺ななみ