Tach!
ich plädiere regelmäßig noch dafür, den ternären Operator mitsamt seinen drei Operanden zu klammern. Das bringt zwar keinen technischen Vorteil, verbessert aber IMO die Lesbarkeit.
Für mich ist alles überflüssige ein kleiner Beitrag zu weniger Lesbarkeit. Ausnahmen bestätigen auch diese Regel. Das schließt zum Beispiel auch unnötig viele Leerzeilen oder Extra-Zeilen für öffnende Klammern im Code ein, was in meinen Augen nur zu zu vielen Scrollbewegungen führt.
Der ternäre Operator hat wie jeder andere Operator auch seinen Platz in der Operatoren-Rangfolge. Die Klammern haben manchmal auch priorisierende Wirkung. Vor allem die logischen Operatoren && und || sowie and und or sind da spezielle Kandidaten. Das sind nicht einfach nur schnöde Alternativschreibweisen sondern eigenständige Operatoren mit unterschiedlichem Vorrang. && und || kommen vor ?:, and und or danach. Damit sind
$foo = $bar && $qux ? 23 : 42;
$foo = $bar and $qux ? 23 : 42;
nicht äquivalent und führen zu unterschiedlichen (oft unerwarteten) Ergebnissen. Die zusätzlichen Klammern verdeutlichen, wie gerechnet wird:
$foo = ($bar && $qux) ? 23 : 42;
$foo = $bar and ($qux ? 23 : 42);
Zusätzliche Klammern können dem Interpreter und dem Leser bei der Erfassung der Intention des Autors helfen. Das heißt, dass ich in solch einem Fall auch eigentlich überflüssige Klammern setze, wenn das der Verständlichkeit dient. Klammern würde ich hier nur den and/&&-Ausdruck, nicht jedoch einteilige Ausdrücke, also hier die 23 und 42. Da empfinde ich die Klammern genauso sinnlos wie Anführungszeichen um eine einzelne "$Variable".
dedlfix.