差異處
這裏顯示兩個版本的差異處。
java:sonarlint:fixcodesmell:s2178 [2020/08/02 16:13] tony 建立 |
java:sonarlint:fixcodesmell:s2178 [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>SonarLint}} | + | |
- | ====== SonarLint | Short-circuit logic should be used in boolean contexts (java:S2178) ====== | + | |
- | ===== Problem ===== | + | |
- | 這問題指的是在做邏輯運算時,如果只有使用一個|或一個&,通常都是誤用: | + | |
- | <code java> | + | |
- | if (test1() | test2()){ | + | |
- | // skip | + | |
- | } | + | |
- | </code> | + | |
- | 即使程式碼實際上有照你預期進入block或沒進入block,但當test1()是true時,其實test2()還是會強制被執行的。 | + | |
- | ===== How to fix? ===== | + | |
- | 只要把一個|改成||即可,這樣如果test1()是true,就會直接執行block中的程式碼: | + | |
- | <code java> | + | |
- | if (test1() || test2()){ | + | |
- | // skip | + | |
- | } | + | |
- | </code> | + | |
- | ===== ===== | + | |
- | ---- | + | |
- | \\ | + | |
- | ~~DISQUS~~ | + |