Android Studio linter 设置中是否有一个选项来确保布尔“&”运算符的任何出现都会导致错误并且只允许“&&”运算符(同时仍然允许 & 运算符对数字进行按位运算)?
TL;DR:您可能知道,在 Java 中,'&' 运算符在执行 AND 运算之前计算两个操作数,而 '&&' 运算符在第一个计算结果为 false 的操作数处停止计算操作数。
我个人认为这种区别既令人困惑又毫无意义。使用 '&&' 运算符,您可以执行以下操作:
if (a != null && fn (a)) { ... }
这意味着fn
永远不应该使用null值调用它。如果我不小心写了:
if (a != null & fn (a)) { ... }
整个测试完全没有意义。我想确保这种错字永远不会发生。短绒规则将是执行此操作的完美方式。
linter 规则应该区分操作数的类型。当&
与数字一起使用时,其含义是按位与运算符。当然,我不想禁止这样做,因为它非常有用。此外,OR 运算符|
和||
行为方式类似,我想禁止|
布尔值,同时允许数值运算。所以基本上:
int a = (3 & 4); // OK
boolean b = (true && false); // OK
boolean c = (true & false); // linter error, hopefully
int d = (5 | 7); // OK
boolean e = (true || false); // OK
boolean f = (true | false); // linter error, hopefully