日本人だからなのか?それとも自分の問題か?


かなり前に「"".equals(value)」か「value.equals("")」の問題が取り上げられていた。
この時は、各所で色々な意見が飛び交っていたが、結果的には「"".equals(value)」の方が優勢だった気がする(個人的感想)。
でも何故か「"".equals(value)」がなじめなかった。
なんでだろうかと不思議だったのだがJPAのCriteriaを見ていて理由がハッキリしたので書いておこうと思う。
自分の場合、この「"".equals(value)」を日本語に脳内変換してしまうためだと気がついた。
つまり「"".equals(value)」を「ブランクはvalueですか?」と日本語に変換しているのだ。
だいたい変換の仕方にも問題があるのだが、せめて「ブランクはvalueと等しいですか?」くらいであれば少しは納得できる?
まぁ変換の問題(そもそも変換している事自体が問題?)はあるが、「value.equals("")」の場合は「valueはブランクですか?」のほうが自分の中でしっくりくるわけだ。


JPAのCriteriaも何故かしっくりこないは同じ理由で、しっくりこない個所は2箇所ある。
1つ目は比較演算子の書き方で、「where(xx.equal(r.get(Customer_.name), "高橋")」のequalの位置がしっくりこない。
上記の意味は「顧客の名前が"高橋"と等しい」という意味になるわけだけど、「where(xx.equal(r.get(Customer_.name), "高橋")」を素直に変換
すると「等しい。顧客の名前が"高橋"と」ってなってしまう。
それであれば「where(Customer_.name.equal("高橋"))」のほうがしっくりくる。
多分、主語が先にこないのがしっくりこない原因なのだろう。。。
2つ目はand,orの書き方で、「where(条件1, xx.or(条件2, 条件3))」のxx.orの位置がしっくりこない。
「where(条件1, xx.or(条件2, 条件3))」の意味は「where 条件1 and (条件2 or 条件3)」となるのだけれど、どうしても即座に変換できない。
JPAの場合、「カンマ」で区切るとandで「or(...)」の...に書かれた内容がorとなるのは頭では理解しているのだけれど、書いてある事を即座に変換できない。
これもandを「かつ」orを「または」という日本語に変換しているせいなのだろう。。。
「"".equals(value)」、「JPAのCriteria」どちらの問題も日本語に変換していること自体が問題なのか、変換の仕方に問題があるのか?
はたまたプログラマとしてはたんしているのか?
おまえはそれでもプログラマか!というお叱りの声が聞こえそうだけどしょうがない><