- - PR -
文字列をequalsで判定する時
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-08 10:46
文字列をequalsで判定する時皆さんはどのようにコーディングしますか?
--------------------------------------- 例:testStrの値が"test"か判定する A: testStr.equals("test"); B: "test".equals(testStr); --------------------------------------- 自分的にはAが当たり前だと思っていましたが、 最近できるプログラマの方がBでコーディングしていました。 みなさんもBでコーディングしているのでしょうか? なにか違いがありますか? | ||||||||||||
|
投稿日時: 2008-02-08 10:59
AはtestStrがnullだった場合例外が発生する。
| ||||||||||||
|
投稿日時: 2008-02-08 11:43
Bでやっていますね。
理由はotfさんに同じ。 | ||||||||||||
|
投稿日時: 2008-02-08 11:55
私もBでやっています。
原因はotfさんに同じ。 if (変数 != null) { 変数.equals(定数); } に比べ 定数.equals(変数); の方が有利ですし。 | ||||||||||||
|
投稿日時: 2008-02-08 12:50
A は testStr が null だった場合、NullPointerException になってくれるという"利点"があります。これは欠点ではなく"利点"だと私は考えます。 あと、testStr を操作したいのならば、別のインスタンスのメソッドの引数に testStr を入れるよりは、素直な A のほうが良いと思います。 | ||||||||||||
|
投稿日時: 2008-02-08 13:44
それが利点かどうかは文脈によると思います。
何らかの文字列検証メソッドだったらAが有効だと思います。 それ以外のメソッドでnull文字列を渡しただけで例外が発生するというのであれば Aは面倒になってしまうと思います。 | ||||||||||||
|
投稿日時: 2008-02-08 14:17
みなさんどうもありがとうございます
今まで自分は if (testStr != null && testStr.equals("test")) 上記のようなコーディングをしていました。 確かにいわれてみれば『"test".equals(testStr)』のほうがいいですね。 なぜ今までずっとこうしてきたのか・・ 勉強になりました | ||||||||||||
|
投稿日時: 2008-02-08 14:51
↑このコードを見れば、null が受け付けられないことが分かりますし、また、
であっても同様に null を期待していないことが分かります。 しかし、
↑このコードをぱっと見ても、testStr に null がありうるのかどうかが分かりません。 入力時のタイプ数やソースコードのプリントアウトの字数は少なくなりますが、細かいロジックを見たいときには、逆に、思考の妨げになると思います。 |