Gibt es eine Option in den Einstellungen des Android Studio-Interferenzfilters, um sicherzustellen, dass das Auftreten des booleschen '&'-Bedieners einen Fehler verursacht und nur den' '-Operator zulässt (während der &-Operator für bitweise Operationen mit Zahlen zulässig ist) ?Android Studio: Lint zu erzwingen "&&" statt "&"?
TL; DR: Wie Sie wahrscheinlich wissen, in Java der ‚&‘ Bediener beiden Operanden auswertet, bevor es die AND-Operation durchführt, während der ‚& &‘ Operator stoppt Operanden an dem ersten Operanden Auswertung zu falscher Auswertung.
Ich persönlich finde diese Unterscheidung sowohl verwirrend als auch sinnlos. Mit dem ‚& &‘ Betreiber können Sie tun Dinge wie:
if (a != null && fn (a)) { ... }
was bedeutet, dass fn
sollte nie mit einem Wert von null aufgerufen werden. Wenn ich versehentlich schreibe:
if (a != null & fn (a)) { ... }
der ganze Test ist völlig bedeutungslos. Ich möchte sicherstellen, dass diese Art von Tippfehlern niemals auftreten kann. Eine Linter-Regel wäre der perfekte Weg, dies durchzusetzen.
Die linter-Regel sollte zwischen den Typen der Operanden unterscheiden. Wenn &
mit Zahlen verwendet wird, ist seine Bedeutung ein bitweiser und Operator. Ich möchte das natürlich nicht ablehnen, da es sehr nützlich ist. Außerdem verhalten sich die OR-Operatoren |
und ||
in ähnlicher Weise, und ich möchte |
für boolesche Werte verbieten und gleichzeitig numerische Operationen zulassen. Also im Grunde:
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
'&' ist in den richtigen Umständen nützlich und ist weit davon entfernt, sinnlos oder nutzlos zu sein. – AntonH
Es ist alles persönlicher Geschmack, schätze ich. Da ich von C++ und JavaScript komme, bin ich an && gewöhnt und sehe keinen Bedarf für den anderen. –
@digorydoo \t Weil Sie manchmal auf Bits arbeiten möchten? –