Oggi ho appreso la briosa valutazione booleana. Nell'esempio seguente, Bar() verrà valutata anche quando Foo() è true.
if (Foo() | Bar())
Questa risposta su SO ha un esempio:
if ((first = (i == 7)) & (second = (j == 10))) { //do something }
Il caso d'uso qui è che vuoi riutilizzare i risultati, ma preferisco scriverlo in questo modo:
first = (i == 7);
second = (j == 10);
if (first && second) { //do something }
Un altro caso d'uso sarebbe che Bar() ha un effetto collaterale che dovrebbe essere eseguito indipendentemente dal fatto che Foo() sia vero o falso. La domanda è, può essere un buon codice o potrebbe indicare un odore di codice?