Učení ternárních operátorů — tipy a triky

Asi před šesti měsíci jsem začal používat logiku ternárního operátoru a všiml jsem si, že neustále používám logiku zkrácené volby if/else. Zkracuje mi to kód, čas na jeho psaní a vypadám chytřeji na kníry .

Díky Google Analytics jsem zjistil, že dostávám mnoho zobrazení stránek od programátorů, kteří hledají informace o „zkratkách if/else“, „ternární logice“ a „shorthand logice php“. Vytvořil jsem několik pokynů pro nováčky „?:“, aby bylo učení těsnopisu if/ else tak rychlé a snadné, jak by mělo být.

Začněte s If/Else, poté převeďte na ternární

Začněte se svými výrazy v jednoduchém kódu if/else a poté pečlivě převeďte každý if/else na kratší ternární příkaz. Může pomoci udělat další krok vytvořením proměnných pro každý výraz.

/* start with if / else ... */
if($language == 'php')
{
	$dynamic = true;
}
else
{
	$dynamic = false;
}

/* ... then convert */
$dynamic = ($language == 'php' ? true : false); //or 1 : 0

/* optional code shortening */
$dynamic = $language == 'php';

Použití závorek ke skupinové logice

Uchování výrazů v závorkách je skvělý způsob, jak udržet kód uspořádaný pro pozdější údržbu.

//viva grouping!
$age_code = ($age > 10 ? ($age > 20 ? ($age > 30 ? 'senior' : 'adult') : 'teen') : 'youngster');

//the following isn't as fun to read
$age_code = $age > 10 ? $age > 20 ? $age > 30 ? 'senior' : 'adult' : 'teen' : 'youngster';

Pro části výrazu použijte "střední" proměnné

Výše uvedený kód 10/20/30 je hrubý a může být obtížné jej udržovat. Použití proměnných může pomoci věci zjednodušit.

//better?
$over_30 = ($age > 30 ? 'senior' : 'adult');
$over_20 = ($age > 20 ? $over_30 : 'teen');
$age_code = ($age > 10 ? $over_20 : 'youngster');

Používejte True/False Boolean, nejen The Expression

Jak asi víte, jako návratovou hodnotu můžete použít JUST výraz. Pokud se domníváte, že vám to během procesu učení ublíží, vraťte explicitně hodnotu true nebo false.

/* explicit */
$can_drive = ($age >= 16 ? true : false);

/* implicit, just the expression */
$can_drive = $age >= 16;

Vědět, kdy nepoužívat ternární logiku

Pokud je v logice mnoho vnořených příkazů if/else, nemusí být zkrácené výrazy tou nejlepší volbou. Například následující fragment kódu vrátí, zda je daný rok přestupným rokem:

$is_leap_year = ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));

Výše uvedený kód funguje dobře pro ternární logiku, protože nemusí být často aktualizován - "výpočet" přestupného roku je vždy stejný. Pokud máte kód, který je třeba často aktualizovat, zkrácený text if/else nemusí být optimální volbou.

Testujte! Test! Test!

Jako u každého typu programování, testujte včas a často!