アカウント名:
パスワード:
やめてくださいおねがいします
どうしてですか?
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]ですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
開いた括弧は必ず閉じる -- あるプログラマー
ハンガリアン記法 (スコア: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]ですね。