アカウント名:
パスワード:
やめてくださいおねがいします
どうしてですか?
Microsoft系で一時期非常に広がっていたシステムハンガリアン記法のことでは?あれは害悪でしかないので、当然やめるべき。Microsoftも最終的に心を改めて、非推奨にしたはず。
同じくMicrosoftで生まれたアプリケーションハンガリアン記法(こちらが元々のハンガリアン記法)の方は有用なので、やめる必要はないですね。
システムハンガリアン記法とアプリケーションハンガリアン記法の違いについてはJoel Spolsky の間違ったコードは間違って見えるようにする [joelonsoftware.com]が詳しいです。
アプリケーションハンガリアンにしても、本来は型システムで解決すべき問題なのでは?
そもそも今時あんまり見かけないのは同じですし。
1人の人が一度アプリケーションハンガリアンならOKと言ったからと言って、いかなる場所でも永久にOKと言う話になっているのに違和感を感じる。
ものには限度ってものがある。1箇所の為に10個の形を定義したり、doubleで済む所をSI組立単位内包オブジェクトにしたりは過剰と言われても仕方ない。
そのためにいちいちプレフィックスを作って規約作って覚えてハンガリアン記法にしろ、と言うのは過剰ではないと言っていますか?
あと、doubleで済むってのは実際両者を試して比較した上での感想?いやよく老害が使う論法なので念のため確認。
元 AC ではないけど、似たようなことをやろうとして大変な思いをしたことはある。型の追加は影響が大きいので、目的がコードのミスを目立たせたいだけなら労苦に見合わない。パフォーマンスに与える影響も心配だし。
そのうちこれも推論で解決して廃れるんじゃないかな。
型の追加でコードのミスを目立たせたい?
そんな話は出ていませんが。
出ている話は、ハンガリアン記法でコードのミスを目立たせたい、型の追加でコードのミスがエラーになるようにする、の二つですよ。
あと、C++でやるならパフォーマンスに与える影響は0にするのが普通でしょう。ほかの言語でもたいていはかなり最適化できるはず。
まあ心配するかどうかについては、確かに個人の自由ですが。
なお、型の追加ですべての場合について解決できるとは言ってないので誤解のないように。
でも試行錯誤は続けるべきではないかな。元の話からの流れを再確認するならば、ハンガリアン記法を再普及させることに対する対案なので、それよりは現実的だと思うんですけどね。
いや無理があるでしょ。何言ってるの?はずとか思うとかで問題は解決しないんだよ。
> そういう環境下で間違ったコードを間違って見えるようにするには、システムハンガリアンが唯一の解決方法だっただろう。
しかし、Microsoftでさえ今や「(システム)ハンガリアン記法は使わないこと」と書く時代なわけで、存在価値を失ってますね。やめるべき。
> それは.NET FrameworkとC#に型推論が導入されて必要なくなっただけでは?> 旧来のWin32の関数群を書き直すとかはしてないでしょう?
h, hwnd, s, sz あたりはアプリケーションハンガリアンとしても解釈できるし OK だと思う。これ以外の多くのシステムハンガリアンって Win32 API でホントに役に立つ?実は使っても間違ったコードが正しく見えるままじゃない?
Win32を使うとしてもラップして整数やらポインタのまま使わないし型エラーになるようにするから要らない
マイクロソフト内では今でもCやC++の利用率が高く.NETもといVB.NETやC#の使用率は低いらしい。そりゃまあOSメーカーなんだからそりゃそうだろうが。
C#では一般的なルール、TypeScriptでは非推奨にされたルールに「インターフェイスはIHogeのようにIから始まる名前にする」ってのがありますが、これだけは残ってほしいなあ…newできるかどうか一目でわかって便利なんだよね
# C#の経験はあったがJavaに不慣れな頃、なぜJavaでnew List()が通らないのか首をひねった思い出
IDEが形を判別してくれるなら不要論もあるけど、支援が効くまでのラグや単に名前だけの一覧見て判別する需要もあるし、そもそもJavaScript系って土台が型推論に不向きだから全面信用できんよね。半手動で形情報作ったり導入したりって思うと接頭辞も悪くない筈なんだが……
意識高い系とか化圏丸ごと敵視してる勢は排除したがるだろうなぁ……
>…が詳しいです。
おー僕の思ってたことがすごいエレガントにまとまっている。
いいリンクをありがとう。
# O_RDONLY の O_ は open() の o なんやで
やっぱりハンガリアンはダメ [it.srad.jp]ですね。
元ではないが、ハンガリアン記法使うと、変数の型が変わると変数名も変える必要がでるから、ハンガリアン記法はオレもやめて欲しい。
これが、グローバル変数とかクラスの変数とかだったりすると、修正が多岐に渡り過ぎて嫌になる。グローバル変数とかクラスの変数の型を変えるなら、使ってる関数も直す必要があるのは分かるが、全ての変数名なんか変えてられんし、変数名変えたら関数の中にも影響するし。
元ACですがこれです「途中で型が変わるとか設計不足だろ」と言わればそうでしょうが中々完璧にはいかないですし最初から手探りで試行錯誤しながら作ってる時なんかは話になりません
C#とかjavaで、ハンガリアン記法が役立つとは全く思えませんけど、まだVBとか、VC++でWin32とか使ってるんならそうでしょうね。
CシャープとかJavaならまあ役に立つでしょ。少なくともポリモーフィズム的には意味があるはず。
数値を実数にするか整数にするか符号の有り無しをどうするか引数を値渡しにするか参照渡しにするか文字列(char *)をconstにするかそのままにするかHWNDの事しか考えないなら困らないでしょうね
試行錯誤したってAPIの仕様は変わらないわけでしょ?
どういう仕事してたらそういう発想なにるのか気になる。
短いスコープは短くていいし。それこそ i とか s とかで十分だったりする。
ハンガリアンがいらんというのは同意だけど、変数名の変更なんて IDEの仕事で人間の手間なんてゼロに等しいだろ。
宇宙に行ったせいではないと思うがチャールズ・シモニーですらもうハンガリアン記法をつかっていないらしい。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall
ハンガリアン記法 (スコア:0)
やめてくださいおねがいします
Re:ハンガリアン記法 (スコア:0)
どうしてですか?
Re:ハンガリアン記法 (スコア:1)
Microsoft系で一時期非常に広がっていたシステムハンガリアン記法のことでは?
あれは害悪でしかないので、当然やめるべき。
Microsoftも最終的に心を改めて、非推奨にしたはず。
同じくMicrosoftで生まれたアプリケーションハンガリアン記法(こちらが元々のハンガリアン記法)の方は
有用なので、やめる必要はないですね。
システムハンガリアン記法とアプリケーションハンガリアン記法の違いについては
Joel Spolsky の間違ったコードは間違って見えるようにする [joelonsoftware.com]が詳しいです。
Re:ハンガリアン記法 (スコア:1)
アプリケーションハンガリアンにしても、本来は型システムで解決すべき問題なのでは?
そもそも今時あんまり見かけないのは同じですし。
1人の人が一度アプリケーションハンガリアンならOKと言ったからと言って、
いかなる場所でも永久にOKと言う話になっているのに違和感を感じる。
Re: (スコア:0)
ものには限度ってものがある。
1箇所の為に10個の形を定義したり、
doubleで済む所をSI組立単位内包オブジェクトにしたりは過剰と言われても仕方ない。
Re:ハンガリアン記法 (スコア:1)
そのためにいちいちプレフィックスを作って規約作って覚えてハンガリアン記法にしろ、と言うのは過剰ではないと言っていますか?
あと、doubleで済むってのは実際両者を試して比較した上での感想?
いやよく老害が使う論法なので念のため確認。
Re:ハンガリアン記法 (スコア:1)
元 AC ではないけど、似たようなことをやろうとして大変な思いをしたことはある。
型の追加は影響が大きいので、目的がコードのミスを目立たせたいだけなら労苦に見合わない。
パフォーマンスに与える影響も心配だし。
そのうちこれも推論で解決して廃れるんじゃないかな。
Re:ハンガリアン記法 (スコア:1)
型の追加でコードのミスを目立たせたい?
そんな話は出ていませんが。
出ている話は、
ハンガリアン記法でコードのミスを目立たせたい、
型の追加でコードのミスがエラーになるようにする、
の二つですよ。
あと、C++でやるならパフォーマンスに与える影響は0にするのが普通でしょう。
ほかの言語でもたいていはかなり最適化できるはず。
まあ心配するかどうかについては、確かに個人の自由ですが。
なお、型の追加ですべての場合について解決できるとは言ってないので誤解のないように。
でも試行錯誤は続けるべきではないかな。
元の話からの流れを再確認するならば、
ハンガリアン記法を再普及させることに対する対案なので、
それよりは現実的だと思うんですけどね。
Re:ハンガリアン記法 (スコア:1)
いや無理があるでしょ。何言ってるの?
はずとか思うとかで問題は解決しないんだよ。
Re: (スコア:0)
Win32APIはハンドルとか何やらかにやら様々に区別しなければならないパラメーターを扱うけど、その実体はtypedefなり#defineしてるだけのただの整数なりポインタだったりするわけで、それらを正しい関数に正しい順番に引き渡さなければならず、かつ当時の処理系は間違いを指摘できなかったわけだ。
そういう環境下で間違ったコードを間違って見えるようにするには、システムハンガリアンが唯一の解決方法だっただろう。
Re: (スコア:0)
> そういう環境下で間違ったコードを間違って見えるようにするには、システムハンガリアンが唯一の解決方法だっただろう。
しかし、Microsoftでさえ今や「(システム)ハンガリアン記法は使わないこと」と書く時代なわけで、
存在価値を失ってますね。
やめるべき。
Re: (スコア:0)
旧来のWin32の関数群を書き直すとかはしてないでしょう?
Re: (スコア:0)
> それは.NET FrameworkとC#に型推論が導入されて必要なくなっただけでは?
> 旧来のWin32の関数群を書き直すとかはしてないでしょう?
h, hwnd, s, sz あたりはアプリケーションハンガリアンとしても解釈できるし OK だと思う。
これ以外の多くのシステムハンガリアンって Win32 API でホントに役に立つ?
実は使っても間違ったコードが正しく見えるままじゃない?
Re: (スコア:0)
Win32を使うとしてもラップして整数やらポインタのまま使わないし型エラーになるようにするから要らない
Re: (スコア:0)
マイクロソフト内では今でもCやC++の利用率が高く.NETもといVB.NETやC#の使用率は低いらしい。
そりゃまあOSメーカーなんだからそりゃそうだろうが。
Re: (スコア:0)
C#では一般的なルール、TypeScriptでは非推奨にされたルールに「インターフェイスはIHogeのようにIから始まる名前にする」ってのがありますが、これだけは残ってほしいなあ…
newできるかどうか一目でわかって便利なんだよね
# C#の経験はあったがJavaに不慣れな頃、なぜJavaでnew List()が通らないのか首をひねった思い出
Re: (スコア:0)
IDEが形を判別してくれるなら不要論もあるけど、
支援が効くまでのラグや単に名前だけの一覧見て判別する需要もあるし、
そもそもJavaScript系って土台が型推論に不向きだから全面信用できんよね。
半手動で形情報作ったり導入したりって思うと接頭辞も悪くない筈なんだが……
意識高い系とか化圏丸ごと敵視してる勢は排除したがるだろうなぁ……
Re: (スコア:0)
>…が詳しいです。
おー僕の思ってたことがすごいエレガントにまとまっている。
いいリンクをありがとう。
# O_RDONLY の O_ は open() の o なんやで
Re: (スコア:0)
やっぱりハンガリアンはダメ [it.srad.jp]ですね。
Re:ハンガリアン記法 (スコア:1)
元ではないが、ハンガリアン記法使うと、変数の型が変わると変数名も変える必要がでるから、
ハンガリアン記法はオレもやめて欲しい。
これが、グローバル変数とかクラスの変数とかだったりすると、修正が多岐に渡り過ぎて嫌になる。
グローバル変数とかクラスの変数の型を変えるなら、使ってる関数も直す必要があるのは分かるが、
全ての変数名なんか変えてられんし、変数名変えたら関数の中にも影響するし。
Re: (スコア:0)
元ACですがこれです
「途中で型が変わるとか設計不足だろ」と言わればそうでしょうが中々完璧にはいかないですし
最初から手探りで試行錯誤しながら作ってる時なんかは話になりません
Re: (スコア:0)
試行錯誤したときに誤った引数を渡さないようにするためのハンガリアン記法だと思うのですが。
Re: (スコア:0)
C#とかjavaで、ハンガリアン記法が役立つとは全く思えませんけど、
まだVBとか、VC++でWin32とか使ってるんならそうでしょうね。
Re: (スコア:0)
CシャープとかJavaならまあ役に立つでしょ。
少なくともポリモーフィズム的には意味があるはず。
Re: (スコア:0)
数値を実数にするか整数にするか符号の有り無しをどうするか
引数を値渡しにするか参照渡しにするか
文字列(char *)をconstにするかそのままにするか
HWNDの事しか考えないなら困らないでしょうね
Re: (スコア:0)
いまどき変数名変えたときは開発環境のリファクタ支援機能でソース内の全参照を書き換えられるんだから、ハンガリアン記法をメンテするのは昔より楽になってる。
というか、そこまでやって初めて変数宣言してる箇所とAPI呼び出し箇所で矛盾があればそれに気づくことができて「間違ったコードは間違って見えるようにする」というメリットを享受できるんじゃないの。
エディタとかで書きっぱなしだった時代よりハンガリアン記法の有用性はむしろ高まってる。
Re: (スコア:0)
試行錯誤したってAPIの仕様は変わらないわけでしょ?
どういう仕事してたらそういう発想なにるのか気になる。
Re: (スコア:0)
短いスコープは短くていいし。それこそ i とか s とかで十分だったりする。
Re: (スコア:0)
ハンガリアンがいらんというのは同意だけど、変数名の変更なんて IDEの仕事で人間の手間なんてゼロに等しいだろ。
Re: (スコア:0)
宇宙に行ったせいではないと思うがチャールズ・シモニーですらもうハンガリアン記法をつかっていないらしい。