アカウント名:
パスワード:
IDEで開発することでハンガリアン記法を捨てさせれば多少短くできるってケースも結構ありそう。クセになってんのか何も考えてないのか、IDEでハンガリアン記法使う意味って何もないのに結構見かけるんだよね、未だに。使ってる人に聞くと「最初(10年以上前)にこうしろって教わった。」とか「わかりやすい」とか。意味わかんない。※そのくせ、"strData"とか変数に命名してるのを見ると「ああ、こいつバカだ」と思ったり。
同意。今時まだシステムハンガリアン使ってるヤツってそういう言い訳するし変数名が適当過ぎますね。そこまではギリギリ譲歩できるけど、システムハンガリアンを強要したり、使ってないとわかりにくいとかわけわからんこと言ってくるのはほんと勘弁して欲しい。
ハンガリアン記法は悪ってよく言われるよね。その延長で変数にプレフィクス付けるのも叩かれる事がある。でもさ、ハンガリアン記法の排除を強制するのって、ハンガリアン記法を強制するのと同じ愚を冒してる気がするんだよね。
例えば、最大値を入れるstringオブジェクトがあるとして、「sMax」とつける、これを良くないという人がいる。プレフィクスはとにかく悪だと思ってるわけだけど、この変数は「maxの文字列」を入れるためのものだから、変数名は「maxString」にしても別におかしくない。無意味なint変数を「foo」とせず「i」とするのと同じ。型名を省けば別の型のma
>変数名は「maxString」にしても別におかしくない。おかしくないですか?maxStringって何が入ってるんですか?まさか文字列"MAX"とか入れてるわけじゃないですよね。さすがにそれはないとして、次に浮かぶのは何かの値の最大値をStringで持っているのだと思いますが、その場合はその何かの値のMAXって名前を付ければいいのでは?たとえば身長だったらtallMaxとかmaxTallとか。
>型名を省けば別の型のmaxと同居しなきゃならない時に悩む事もある。というのはわからないでもないですが、同じスコープの中で同じ名前で違う型の変数が必要になるのがダメな気がします。なので、StrとかStringとかsとかの接頭語、接尾語はいりません。
横からですが。
さすがにそれはないとして、次に浮かぶのは何かの値の最大値をStringで持っているのだと思いますが、 その場合はその何かの値のMAXって名前を付ければいいのでは? たとえば身長だったらtallMaxとかmaxTallとか。
入力が文字列で、それをチェックして数値に変換するような場合ってどうしてます? 例えばウェブでフォームから最大値を入力してもらうとしたら、自分なら
String sMax = request.getParameter("max");if(sMaxが妥当な値かチェック)){ //異常値ならエラー処理}int max = Integer.parseInt(sMax);...
みたいに書いちゃいますが、NGですかね?
数値が最終形なら文字列いらない。RangeCheckedInteger MaxFoo = RangeCheckedInteger::FromString((request.getParameter("max"));
ハンガリアン記法をするならご自由に。
つうか、そんなところで裸のparseIntは止めなされ
1つの問題は#2131434氏の状況で、まさにこのシチュエーションを想定してコメントを書いていました。別の理由もあって、例えばintの派生型としてtall型を定義している状況の場合、「tallMax」は、プレフィクスを付けているように見られてしまうという事です。型がtallなら変数名はmaxでいいと言われるのでしょうが、まあ状況によりけりで、tallMaxの方がコードが読み易い場合でも、妙な縛りが掛かってしまうのはおかしいだろうという事で。
これはとあるTaskクラスを作っていた時に感じたことで、変数名に「task」を入れないと、重要な情報の抜けている変数名になっていまい、何だかなあと思ったもので。
とりあえず、かみついてみたのですね。さすがに「strData」に違和感を感じないのはおかしいだろう。その変数が何を意味するかすぐにわかりますか?
IDEで〜と言うと漠然とした言い方になるけど、型情報を表示するなり、警告するなりする機能があればいらないって事だよ。だいたい、オブジェクト指向言語でハンガリアン記法なんか現実的にできるの?逆にハンガリアン記法を無理やり使うために歪んた規約に従ってませんか?
ハンガリアン記法は強力だ。使いどころを間違えなければ。間違ったコードは間違って見えるようにする - The Joel on Software Translation Project [joelonsoftware.com]
結局のところ、言いたいことは分からないでもないが書き方に問題がある。鈍感に「ハンガリアン記法」とだけ書くから反感を買う。
静的・動的言語の違いではなく強く型付けされているか否かだろう、という指摘はさておき。
「型を分ける」が何を指すか曖昧だが、新しいクラス・メソッドを全部作りこむという意味ならナンセンスだ。手がかかりすぎて現実的ではない。
もしも後輩が、整数型を不服として自然数型や素数型や0を含まない数型を作ってきたらどう思う。
それを作る必然性が十分なら、別に何も思いませんが。自然数である事、素数である事、0を含まない事の条件が型で保証されればわかりやすいというならそれでいいんじゃない?
そこまでする必然性は存在しない。って言うかな。私なら。
極端な例を挙げたので、真顔で肯定されるとは思わなかった。理論上は正しくても別の制約で実現できないことはたくさんあるので、現実の世界ではバランスをとらないと。古い習慣にしがみついている人を笑えない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
IDEで開発するならハンガリアン記法捨てようぜ (スコア:-1)
IDEで開発することでハンガリアン記法を捨てさせれば多少短くできるってケースも結構ありそう。
クセになってんのか何も考えてないのか、IDEでハンガリアン記法使う意味って何もないのに結構見かけるんだよね、未だに。
使ってる人に聞くと「最初(10年以上前)にこうしろって教わった。」とか「わかりやすい」とか。意味わかんない。
※そのくせ、"strData"とか変数に命名してるのを見ると「ああ、こいつバカだ」と思ったり。
Re:IDEで開発するならハンガリアン記法捨てようぜ (スコア:2)
同意。
今時まだシステムハンガリアン使ってるヤツってそういう言い訳するし
変数名が適当過ぎますね。
そこまではギリギリ譲歩できるけど、
システムハンガリアンを強要したり、使ってないとわかりにくいとかわけわからんこと言ってくるのはほんと勘弁して欲しい。
Re: (スコア:0)
ハンガリアン記法は悪ってよく言われるよね。その延長で変数にプレフィクス付けるのも叩かれる事がある。
でもさ、ハンガリアン記法の排除を強制するのって、ハンガリアン記法を強制するのと同じ愚を冒してる気がするんだよね。
例えば、最大値を入れるstringオブジェクトがあるとして、「sMax」とつける、これを良くないという人がいる。
プレフィクスはとにかく悪だと思ってるわけだけど、この変数は「maxの文字列」を入れるためのものだから、
変数名は「maxString」にしても別におかしくない。無意味なint変数を「foo」とせず「i」とするのと同じ。
型名を省けば別の型のma
Re: (スコア:0)
>変数名は「maxString」にしても別におかしくない。
おかしくないですか?
maxStringって何が入ってるんですか?
まさか文字列"MAX"とか入れてるわけじゃないですよね。
さすがにそれはないとして、次に浮かぶのは何かの値の最大値をStringで持っているのだと思いますが、
その場合はその何かの値のMAXって名前を付ければいいのでは?
たとえば身長だったらtallMaxとかmaxTallとか。
>型名を省けば別の型のmaxと同居しなきゃならない時に悩む事もある。
というのはわからないでもないですが、同じスコープの中で同じ名前で違う型の変数が必要になるのがダメな気がします。
なので、StrとかStringとかsとかの接頭語、接尾語はいりません。
Re: (スコア:0)
横からですが。
さすがにそれはないとして、次に浮かぶのは何かの値の最大値をStringで持っているのだと思いますが、
その場合はその何かの値のMAXって名前を付ければいいのでは?
たとえば身長だったらtallMaxとかmaxTallとか。
入力が文字列で、それをチェックして数値に変換するような場合ってどうしてます?
例えばウェブでフォームから最大値を入力してもらうとしたら、自分なら
みたいに書いちゃいますが、NGですかね?
Re: (スコア:0)
数値が最終形なら文字列いらない。
RangeCheckedInteger MaxFoo = RangeCheckedInteger::FromString((request.getParameter("max"));
ハンガリアン記法をするならご自由に。
Re: (スコア:0)
つうか、そんなところで裸のparseIntは止めなされ
Re: (スコア:0)
1つの問題は#2131434氏の状況で、まさにこのシチュエーションを想定してコメントを書いていました。
別の理由もあって、例えばintの派生型としてtall型を定義している状況の場合、
「tallMax」は、プレフィクスを付けているように見られてしまうという事です。
型がtallなら変数名はmaxでいいと言われるのでしょうが、まあ状況によりけりで、
tallMaxの方がコードが読み易い場合でも、妙な縛りが掛かってしまうのはおかしいだろうという事で。
これはとあるTaskクラスを作っていた時に感じたことで、変数名に「task」を入れないと、
重要な情報の抜けている変数名になっていまい、何だかなあと思ったもので。
Re: (スコア:0)
とりあえず、かみついてみたのですね。
さすがに「strData」に違和感を感じないのはおかしいだろう。その変数が何を意味するかすぐにわかりますか?
IDEで〜と言うと漠然とした言い方になるけど、型情報を表示するなり、警告するなりする機能があればいらないって事だよ。
だいたい、オブジェクト指向言語でハンガリアン記法なんか現実的にできるの?
逆にハンガリアン記法を無理やり使うために歪んた規約に従ってませんか?
Re:IDEで開発するならハンガリアン記法捨てようぜ (スコア:1)
ハンガリアン記法は強力だ。使いどころを間違えなければ。
間違ったコードは間違って見えるようにする - The Joel on Software Translation Project [joelonsoftware.com]
結局のところ、言いたいことは分からないでもないが書き方に問題がある。
鈍感に「ハンガリアン記法」とだけ書くから反感を買う。
Re: (スコア:0)
動的言語ならご愁傷様。
Re:IDEで開発するならハンガリアン記法捨てようぜ (スコア:1)
静的・動的言語の違いではなく強く型付けされているか否かだろう、という指摘はさておき。
「型を分ける」が何を指すか曖昧だが、新しいクラス・メソッドを全部作りこむという意味ならナンセンスだ。
手がかかりすぎて現実的ではない。
もしも後輩が、整数型を不服として自然数型や素数型や0を含まない数型を作ってきたらどう思う。
Re: (スコア:0)
それを作る必然性が十分なら、別に何も思いませんが。
自然数である事、素数である事、0を含まない事の条件が型で保証されればわかりやすいというならそれでいいんじゃない?
Re:IDEで開発するならハンガリアン記法捨てようぜ (スコア:1)
そこまでする必然性は存在しない。
って言うかな。私なら。
極端な例を挙げたので、真顔で肯定されるとは思わなかった。
理論上は正しくても別の制約で実現できないことはたくさんあるので、現実の世界ではバランスをとらないと。
古い習慣にしがみついている人を笑えない。