- - PR -
文字列をequalsで判定する時
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-14 10:32
どの投稿で終わっているのでしょうか? 私は全部の投稿を一応読んでいますが、終わっていなかったと思っています。 (無駄に長いスレなので私が見落としているだけかもしれません) strがnullを許可する場合、 (1) str != null && str.equals("") (2) "Hoge".equals(str) (3) str.equals("Hoge") (1)(2)の二つは等価ですが、(3)は違いますよね。 strにnullを許可しないことを前提とした場合の議論は進んでいますが、 strがnullを許可する前提ではどうか?という話については、 それぞれにどんなメリットがあるか?という話はなかったと思います。 少なくともあぶぽんさんはA派と宣言されていますが、(1)と(2)の比較については 言及されていなかったと思うのですが、違いましたか? | ||||||||||||||||
|
投稿日時: 2008-02-14 10:33
文脈が違うことを承知であえて書きます。 僕は具体的に痛い思いを数度(3、4回?)しています。 すべてに共通していることを。。。 まず、 1.コーディング時に気持ち悪いことを強要される。 これは、「気持ち悪い」のは主観であって、 B派がコーディング規定であったためですから、主張からは外します。 2.事前にエラー処理(この場合、str == nullなら例外をスロー)を 行なっていない箇所が散乱しており、検出に手間取った。 これは、B派の中でエラー処理は別途考える人には関係ない話。 3.テストの際、設計書と見比べづらいとテスターからクレームがきた このあたりが、「読みやすい」「読みやすくない」が主観ではないと 主張したいところです。 しかし、設計書に「"Hoge"がstrであること」と書かれていた場合は、 問題ないと思いますので主張から外します。 ↑ これが、設計ミスだとまではいいません。 いろんな要件がありますから、有り得ないことではないと思います。 | ||||||||||||||||
|
投稿日時: 2008-02-14 10:37
あまりにもマニアックな話題に突っ込んでますんで
このあたりは自分のblogとかで考察することにします。 あぶぽん氏に確認したいのは
という部分について、どのようにお考えですか? | ||||||||||||||||
|
投稿日時: 2008-02-14 10:37
いや、別に""と"Hoge"の違いを提起したかったわけじゃないんですが・・・。 僕はnull考慮漏れどうこうは全く気にしていなくて、やりたいことが非常にささいなのに、それに見合ったコード量にならないのは好きじゃないというだけの理由で、文字列リテラルを左側に置いてますよ、という立場を表明しただけのことです。
自然に感じるのは「str.equals("Hoge")」のほう、保守しやすい(≒読みやすい)のは「"Hoge".equals("")」のほう。これは僕個人の意見です。 | ||||||||||||||||
|
投稿日時: 2008-02-14 10:41
4ページの終わり、かつのりさんの発言です。 ちなみに僕は、その後から参加していますので、 僕の発言はすべてその前提です。 テクニック過剰なことに応戦して横道にそれたり、 XP教などこのスレッドにはいないのに批判したり、 何度も横道にそれていますが、 アサーションとエラー処理は別途考慮するということに 反論されていた方っていましたか? | ||||||||||||||||
|
投稿日時: 2008-02-14 10:44
そうか! nullを無害化すればいいのか!
#ジョークです・・・ | ||||||||||||||||
|
投稿日時: 2008-02-14 10:46
nagiseさん、
マニアックですねぇ〜。。。好きなんです、こういうの(*^_^*)
全面的に賛成です。 その場合、設計書もそれなりの考えに基づいた文章になっていないといけませんが、 具体的にどう書けば良いのかちょっと思いつかないです。 | ||||||||||||||||
|
投稿日時: 2008-02-14 10:49
まったく別の話題になってますが。。。
おもしろいですヽ(^。^)ノ 実際、ありました、そういうの。。。 |