- - PR -
文字列をequalsで判定する時
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-13 20:19
少なくとも私はそういう観点で意識したことはないですね。 単に「時期は一緒だけど関係ないこと」だと思いますね。 XPのプラクティスにそのような文化は当然存在しません。 なのにどこからXPと関連づいてくるのか。
AでもBでもいいですが、NullPointerの考慮漏れのバグは作りこまないで欲しい。 ちゃんと考慮されるならどちらでも構いません。 | ||||||||||||
|
投稿日時: 2008-02-13 20:23
矛盾を突いているところは同意しますが、 理解していることと使用することは別です。 わざわざ書きませんが、 Javaのように比較的構文に自由度のある言語では複雑怪奇な書き方もできるわけです。 ※ この場合の複雑怪奇というのは未記入さんが考える複雑怪奇でいいですよ。 まさか、「str.equals("Hoge")」が複雑怪奇とは言わないでしょ? | ||||||||||||
|
投稿日時: 2008-02-13 20:27
> なら、"literal".equals(var) だって理解できるんじゃないの?
モンダイの、principalのStringオブジェクトがvarである、という前提では、もう絶対的に var.equals("literal")ですよ。私の投稿の文は、そうなってるはずですが。 "literal"がprincipalであるコード文脈では、主客がもちろん逆転します。 | ||||||||||||
|
投稿日時: 2008-02-13 20:32
僕はそれ以外に考えられませんでした。 違う人もいることは分かりました。 僕自身がアジャイル(主にXP)を採用してますから、 僕が指摘したかったのは、「B派=アジャイル」ではないということでしたが、 このスレッドでは、それは関係ないのですね。 「A派でアジャイルもあり」というのに、誰も反論してこないですから。 # アジャイルは忘れてください。。。とりあえず、そういう人が来ない限り ![]() | ||||||||||||
|
投稿日時: 2008-02-13 20:59
作りこんでも、単体テストの段階で除去すればいいだけの話です。 その点、Bは例外を隠しやすいので心配です。 例えるなら、catch (Exception e) { // do nothing} みたいなコードかな。 | ||||||||||||
|
投稿日時: 2008-02-13 21:16
どんな風に隠すんでしょうか? まず、if文のブロックの中で該当変数を参照している場合
この場合、strがnullの場合にcharAtでNullPointerExceptionが出ますから 例外が隠されることはありません。場所は違ってきますが。 そして、そもそもnull時とそうでないときで処理が分岐する必要がある場合、 ifの分岐でnullの条件を含んだ判断式にしますから、 "hoge".equals(str)という記述にすることと例外が隠されることに因果がない。 "hoge".equals(str)という記述を用いた前提で、 プログラマがどのような誤りをした場合に例外が隠されるのでしょうか? | ||||||||||||
|
投稿日時: 2008-02-13 22:22
いや、例外が発生する例として挙げられたコードで、ifの中でstrを参照してなかったら隠されますよね。 | ||||||||||||
|
投稿日時: 2008-02-13 23:16
nullの場合にNullPointerExceptionを発生させなくてはならなくて、 かつ、引数の文字列を参照しないケースってどんな場合なのでしょうか? 使わないならそもそも引数に渡さないでしょ。 |