@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

文字列をequalsで判定する時

投稿者投稿内容
コージ
常連さん
会議室デビュー日: 2005/07/29
投稿数: 39
投稿日時: 2008-02-08 10:46
文字列をequalsで判定する時皆さんはどのようにコーディングしますか?

---------------------------------------
例:testStrの値が"test"か判定する

A: testStr.equals("test");
B: "test".equals(testStr);
---------------------------------------


自分的にはAが当たり前だと思っていましたが、
最近できるプログラマの方がBでコーディングしていました。
みなさんもBでコーディングしているのでしょうか?
なにか違いがありますか?




otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-02-08 10:59
AはtestStrがnullだった場合例外が発生する。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-02-08 11:43
Bでやっていますね。
理由はotfさんに同じ。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2008-02-08 11:55
私もBでやっています。
原因はotfさんに同じ。

if (変数 != null) {
変数.equals(定数);
}
に比べ
定数.equals(変数);
の方が有利ですし。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-02-08 12:50
引用:

コージさんの書き込み (2008-02-08 10:46) より:
A: testStr.equals("test");
B: "test".equals(testStr);


A は testStr が null だった場合、NullPointerException になってくれるという"利点"があります。これは欠点ではなく"利点"だと私は考えます。
あと、testStr を操作したいのならば、別のインスタンスのメソッドの引数に testStr を入れるよりは、素直な A のほうが良いと思います。
otf
ベテラン
会議室デビュー日: 2006/08/04
投稿数: 91
投稿日時: 2008-02-08 13:44
それが利点かどうかは文脈によると思います。
何らかの文字列検証メソッドだったらAが有効だと思います。
それ以外のメソッドでnull文字列を渡しただけで例外が発生するというのであれば
Aは面倒になってしまうと思います。
コージ
常連さん
会議室デビュー日: 2005/07/29
投稿数: 39
投稿日時: 2008-02-08 14:17
みなさんどうもありがとうございます
今まで自分は
if (testStr != null && testStr.equals("test"))
上記のようなコーディングをしていました。
確かにいわれてみれば『"test".equals(testStr)』のほうがいいですね。
なぜ今までずっとこうしてきたのか・・
勉強になりました
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-02-08 14:51
引用:

コージさんの書き込み (2008-02-08 14:17) より:
今まで自分は
if (testStr != null && testStr.equals("test"))
上記のようなコーディングをしていました。


↑このコードを見れば、null が受け付けられないことが分かりますし、また、
コード:
if (testStr.equals("test")) 


であっても同様に null を期待していないことが分かります。

しかし、
引用:

コージさんの書き込み (2008-02-08 14:17) より:
確かにいわれてみれば『"test".equals(testStr)』のほうがいいですね。


↑このコードをぱっと見ても、testStr に null がありうるのかどうかが分かりません。
入力時のタイプ数やソースコードのプリントアウトの字数は少なくなりますが、細かいロジックを見たいときには、逆に、思考の妨げになると思います。

スキルアップ/キャリアアップ(JOB@IT)