if (someString != null && map.containsKey(someString = someString.toLowerCase()))
これが私の文字列値を割り当てる良い方法と見なされるのか、悪い方法と見なされるのか疑問に思っています。このようにコードを書くことで、ヌルチェックの使用を2倍にしていると思いますか?
それはあなたの意図を隠すので悪いと思います。それは他の誰かがあなたのコードを見ているときにもっと重要です。パフォーマンスの向上はなく、読みやすさが失われるだけです。また、私はこれを回避することに慣れているので、これがJavaでも機能することすら知りませんでした(通常、これはPHPスクリプトで見られます)
私が見ることができる唯一の問題は、==
の代わりに誤って取得した場合です=
。これはブール値になり、表示されないため、予期しない結果が生じる可能性がCompiler Error
あり、条件が真になることはありません。
Map.containsKey
常に返されますfalse
- No Compiler Error
、いいえRuntime Exception
、毎回結果が出るだけfalse
で、問題を探しているあなたの人生は地獄になります:-
if (someString != null && map.containsKey(someString == someString.toLowerCase()))
理想的には、そのように使用することは避けてください。そのように割り当てると、コードが読みにくくなります。また、何もしないという保証はありませんtyping mistake
。したがって、そのように使用することは避けたほうがよいでしょう。
JavaのcontainsKey
メソッドは、パラメーターとして実装するものすべてを想定してObject
います。ここで見つけることができます。
最初の間違いは、割り当てをパラメーターとして送信することです。これは、別々に行うか、単にsomeString.toLowerCase()
パラメーターとして送信する必要があります。
次に、if
条件文をネストすることで、コード実行時の優先順位を定義し、読みやすさも向上させ、最終的に発生する可能性のある他の奇妙な間違いを防ぐことができますが、それはプログラムの残りの部分の動作にも依存します。