多くの分析チェックは、コーディング基準を持つ開発チームに提供されます。コーディング標準は、理由の1つまたは別のものが操作の特定の順序を好むものです。組織のポリシーに従ってオン/オフを切り替えることができ、ポリシーを統一させるために開発者に配布することさえできます。このため、いくつかの分析は矛盾しています。なぜなら、ある組織は一方的な方法と他の方法とを好むからです。そのような場合に、組織が他の組織よりも優れている理由を説明するのは、組織にとっての責任です。
限り、それはデフォルトではこの方法である理由、私は==
オペランドの順序で行うには持っていない、二つの理由を示唆することができますが、注文がequals
とassertEquals
比較に意味があるとするので、コーディング標準が必要かもしれないとして、 ==比較のために同じであるようにする。
まず、定数を最初に入れる方が安全な場合があります。 fooがnullの場合、最初の1は、NPEを取得することはできませんので、例えば、表現
if(CONSTANT.equals(foo)){...}
は
if(foo.equals(CONSTANT)){...}
よりも安全です。
第2に、コードを簡素化できます。たとえば、次は同等です:
if(foo != null && foo.equals(CONSTANT)){...}
if(CONSTANT.equals(foo))
もう一つの理由は、おそらく値がテストされる前に、いくつかのAPIに「期待」値は、一般的に予想される場合には、誤った診断情報が得られるであろう、JUnitののassertEquals
のように、来ることです値はまず来ない。
私が過去に聞いた理由は、比較の期待値が最初に来るときに読みやすくなるということです。まず、式でチェックされる値を探し出す必要はありません。
提案を受け入れると、それをもう一度フリップするように提案されます。最も読みやすいものを見つけることはあなた次第です。そうでなければ、問題ではない。 –
また、[Yoda conditions wiki page](https://en.wikipedia.org/wiki/Yoda_conditions)を見ることもできます。これには、以下の回答の中にいくつかの利点があります。 – Morfic
@JBNizet 'while(tree.children()。length == 1)'の場合、それを1回ひっくり返して戻すことを提案しますが、フリップバックを受け入れることは何もしません。 –