In primo luogo, è chiaro dal contesto che per conditional expression
Hunt si intende l'espressione booleana in un'istruzione condizionale. Questa è una sezione sul controllo del flusso, e non sull'uso di espressioni booleane per altri scopi, o su (come direi) espressioni condizionali basate sull'operatore '?:' Ternario.
Credo che l'intento sottostante qui sia che le parti di un'espressione condizionale utilizzate per il controllo del flusso dovrebbero evitare equivoci che potrebbero derivare dalla valutazione del cortocircuito o da effetti collaterali. Non vedo alcun motivo per evitare di chiamare le funzioni del metodo per ottenere valori usati in un'espressione condizionale (a condizione che non ci siano effetti collaterali), e non vedo alcun problema a seconda della valutazione del cortocircuito a condizione che le relazioni tra le parti dell'espressione siano chiaramente visibile. È il rischio di connessioni nascoste e conseguenze nascoste che dovrebbero essere evitate. Quindi:
if (x.Contains(a) && x.Median() > b) {} // ok
if (x.Insert(a) && x.Median() > b) {} // NOT ok
C'è un'ulteriore considerazione. La chiamata di un metodo può comportare una penalizzazione delle prestazioni, quindi se Median () è lento a calcolare:
if (x.Median() >= a && x.Median() <= b) {} // slower
var median = x.Median();
if (median >= a && median <= b) {} // faster
Detto questo, penso che Hunt ci offenda non riuscendo a spiegare cosa intende. Speriamo che una futura versione risolva questa lacuna.