- PR -

文字列をequalsで判定する時

投稿者投稿内容
OTAKE
会議室デビュー日: 2008/02/08
投稿数: 18
投稿日時: 2008-02-09 19:13
型の判定はしてないですよ。
等価というのは、strがnullの場合に、同じ動作をするという意味です。
if (testStr != null && testStr.equals("test")) {}
if ("test".equals(testStr)) {}
の両方とも、strがnullまたはtest以外のときには、if文の中身は実行しないで、strがtestのときに、中身を実行します。

strがnullまたはtestのときには、if文の中身は実行しないで、strがtest以外のときに、中身を実行するコードは
if (testStr != null && !testStr.equals("test")) {}
と書けますが、普段は
if ("test".equals(testStr)) {}
こう書いている人は、どういう風に書くのかを知りたいのです。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2008-02-09 19:45
引用:

未記入さんの書き込み (2008-02-09 19:13) より:
型の判定はしてないですよ。
等価というのは、strがnullの場合に、同じ動作をするという意味です。
if (testStr != null && testStr.equals("test")) {}
if ("test".equals(testStr)) {}
の両方とも、strがnullまたはtest以外のときには、if文の中身は実行しないで、strがtestのときに、中身を実行します。

strがnullまたはtestのときには、if文の中身は実行しないで、strがtest以外のときに、中身を実行するコードは
if (testStr != null && !testStr.equals("test")) {}
と書けますが、普段は
if ("test".equals(testStr)) {}
こう書いている人は、どういう風に書くのかを知りたいのです。



どのような意図で型判定をしていないと言っているのか理解できていませんが
testStrがStringで宣言してあるのでnullでなければString及びそのサブクラスであることが保障できるのですよね?
そのため文字列としての比較が可能だと

普段どうかいているかと聞かれれば
コード:
if (testStr != null) {
  if (!("test".equals(testStr))) {
  } else {
  }
}


若しくは
コード:
if ((testStr != null) && !("test".equals(testStr))){}


ですね
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-02-09 20:18
一票:
わたなべさんの「気持ち悪い」説と、unibonさんのNPE==good説に賛成票を投じます。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-02-09 21:48
結局は好みの問題なんで真剣に相手を論破しようとしても意味ないですよ、と。

mixiのJavaコミュでも不毛な議論になっていたけど、大人ならば適当に「どっちもあり、自分はこっちが好き(嫌い)」で収めましょう。
OTAKE
会議室デビュー日: 2008/02/08
投稿数: 18
投稿日時: 2008-02-09 22:17
引用:
mixiのJavaコミュでも不毛な議論になっていたけど、大人ならば適当に「どっちもあり、自分はこっちが好き(嫌い)」で収めましょう。


個人が個人用のツールなりを作る分には、その人の好きなように作ればいいんですが。
チーム開発の場合は、コーディングスタイルを合わせたほうがいいですよね?
コーディング規約が決められているプロジェクトで、「私はこっちの書き方が好きです、だから決まりには従いません」なんて許されるはずもなく。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-02-09 22:29
そりゃ開発の現場では意思統一が必要でしょう。
会議室で意思統一する必要があるんですか?

開発時なんて、自分の好みに出来ないで我慢するのは普通だし。
まあ、…出来ない人は偶にいますが
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-02-10 02:42
自分は予めnullに対して無害化や例外のスローを行うので、
コード:
if(str.equals("hoge"))


で十分です。

どの方法をとっても間違いではないので、好みの問題ですよね。
わたなべさんの意見に一票。

#なんかこの手のスレッドって定期的に出てきますね。
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2008-02-11 14:45
僕も、かつのりさんと同じく、
例外処理やアサートは予め行なっておくので、
コード:
if (testStr.equals("test")) {


です。

リテラルかどうかにかかわらず、比較対象を左に書くことはしません。

逆は「トリッキー」というものです。

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