I'm new to using IntelliJ Idea and I have the following code:
private boolean verifyToken(TokenTypeEnum expectedTokenType, Token token) {
return token != null &&
token.getTokenType() == expectedTokenType &&
token.getExpiryDate().isAfter(Instant.now());
}
Now IntelliJ-IDEA complains that this Boolean method is always inverted. But I specifically wrote the method so it returns a positive, I do not want to make a method isInvalidToken or something like that. I believe the point of this warning is actually to avoid negatives such as those.
What's more, if I actually let IntelliJ invert the method automatically, it makes the expression like this which is exactly NOT what I would want as it is much harder to reason about (even if I would rewrite the date comparison)
private boolean newNegativeMethod(TokenTypeEnum expectedTokenType, Token token) {
return token == null ||
token.getTokenType() != expectedTokenType ||
!token.getExpiryDate().isAfter(Instant.now());
}
Why is it doing this? I can disable the warning of course, but I'd rather not.
"Always inverted" means that in all places where the method is called, the ! operator is applied to the call expression. IntelliJ IDEA has no clue whether this is hard or easy to reason about from the semantic point of view; it just performs syntactic analysis. If you believe that inverting the method will make the code harder to understand, simply suppress the inspection for this method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With