Sì, così con il return true; finale è funzionalmente corretto. Se b è true, non fai il sinistro e restituisce true. Se b è false, fai il sinistro e restituisce il suo risultato, qualunque sia. E' una forma di OR con comportamento detto short-circuit.
Ma è un po' contorto (e non mi piace granché). Conosci l'operatore di OR "logico"? Se conosci && (il AND "logico") ... dovresti.![]()