- - PR -
String#equals()を明示的に使うべきか?
投票結果総投票数:55 | |||
---|---|---|---|
必ず使うべき | 52票 | 94.55% | |
使うべき | 0票 | 0.00% | |
使ったほうがいい | 0票 | 0.00% | |
場合による | 1票 | 1.82% | |
どちらでもいい | 0票 | 0.00% | |
使わなくていい | 0票 | 0.00% | |
使わないほうがいい | 0票 | 0.00% | |
|
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-05 18:39
美しさは主観によるところなのでそこは触れませんが… 参照の比較なんて絶対に使わないよ!という前提でならオブジェクト型の ==が内容の比較でもいいとは思いますけども。 整合性で言えば プリミティブ型 : ==で内容比較 オブジェクト型 : ==で内容比較、===で参照比較 とかのほうが綺麗なのかもしれませんね。 私は演算子オーバーロードはメリットよりもデメリットが大きいように思います。 常に演算子の挙動がオーバーロードによって変えられている可能性を 考えながらコードを書くなんて… 反EoDな考え方のように思うのですよね。 | ||||||||
|
投稿日時: 2007-04-05 18:40
演算子オーバーロードを導入すると、
(a == b)が(a.equals(b))になると思いますが、 aがnullだったら・・・とか考えると、結構微妙です。 現にenum型のnullをswitch構文に渡すとNPEがスローされますね。 | ||||||||
|
投稿日時: 2007-04-05 18:47
nagiseさん、ラッシュでしたね。。。先ほどの書き込み見ていただけたでしょうか?
その意見、賛成!!
ええ、言葉不足でした。 演算子のオーバーロードを導入するのではなく、 「==」演算子を独自に定義できて、定義されていない場合は「==」で比較できない という仕様です。 | ||||||||
|
投稿日時: 2007-04-05 18:54
それ、なんて Script 言語? (w Java では断固反対ですね。 今のシンプルな言語仕様の方が性に合っているでしょう。 反対意見は多いと思いますよ。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-04-05 19:00
Syntax Sugarの追加ですね。 確かにあってもおかしくはないと思います。 すでにStringの場合の+演算子で導入されてますし。 ===の場合は、左辺.equals(右辺)の呼び出しと等価とする、でしょうね。 ==の挙動を変える事は、互換性的にも簡潔さ的にも望ましくないと思います。 Javaの場合、==はプリミティブ型でも、参照型(実質的にアドレスです)でも、 それぞれの式の値そのものを比較する、という仕様で統一されていますし。 #昔どこかで同じような話を見かけたような??気のせい? | ||||||||
|
投稿日時: 2007-04-05 19:07
JavaScriptと同じ、===(厳密演算子)をJavaに導入するのは、
悪くないとは思うんですけどね。 ただ、=== としたいのに、間違って == にしても、パッと見 では判断しにくくなってしまうかもしれないですね。 | ||||||||
|
投稿日時: 2007-04-05 19:08
じゃんぬねっとさん、
「===」はやりすぎでしょうが、 言語仕様でなんとかしたいという意味です。。。 Rubyなんかは結構、記号を使っちゃってますけど、 JavaはSmalltalkの流れも汲んでますから、記号過多はいやがられそうですね。 前々回のコメントでサンプルコード書きましたが、 getterとかsetterとかをガチガチの関数記述にしちゃうと、 可読性が悪くなるんですよね。 僕はSmalltalk偏りですから、本当はSmalltalkならと思ってしまいがちです。。。 上記、宗教論的なのでお手柔らかに | ||||||||
|
投稿日時: 2007-04-05 19:13
String#equals()に変わるものを提案してもいいんじゃないか?
ということで、化けてるところに投票しました |