| Checking a provably-identical condition twice can be a sign of a logic error. |
| |
| For example: |
| |
| ```java |
| public Optional<T> first(Optional<T> a, Optional<T> b) { |
| if (a.isPresent()) { |
| return a; |
| } else if (a.isPresent()) { // Oops--should be checking `b`. |
| return b; |
| } else { |
| return Optional.empty(); |
| } |
| } |
| ``` |
| |
| It can also be a sign of redundancy, which can just be removed. |
| |
| ```java |
| public void act() { |
| if (enabled) { |
| frobnicate(); |
| } else if (!enabled) { // !enabled is guaranteed to be true here, so the check can be removed |
| doSomethingElse(); |
| } |
| } |
| |
| ``` |