be clear, not clever

Le code suivant, bien que possédant une complexité logarithmique relativement faible, pourrait toutefois nécessiter quelques secondes pour être pleinement analysé et compris :

$label = ($items[0] ?? null)?->visits ? 'has visits' : 'no visits';

L'ajout d'un nullsafe sur le retour d'un null coalescent directement dans une ternaire rend ce code inutilement difficile à appréhender.

La complexité de cette ligne devient purement accidentelle et constitue une coupure cognitive délétère pour la qualité de votre code.

La programmation n'est en aucun cas un exercice de concision, écrire en une ligne ce que vous auriez pu faire en plusieurs n'est à aucun moment un gage de qualité.

Le code que vous produisez aujourd'hui est irrémédiablement destiné à être lu et compris par des humains, partant de ce constat, le soin que vous apporterez à votre syntaxe et au style sera préjudiciable pour rendre votre code accessible et maintenable dans le futur.

N'hésitez pas à écrire votre code de manière plus verbeuse et directive si cela contribue à rendre votre code plus explicite :

$firstItem = $items[0] ?? null;

if ($firstItem?->visits) {
    $label = 'Has visits';
else {
    $label = 'No visits';
}

Good programmer write code that humans Can understand ~ Martin Fowler