Nedávno jsem se vrátil k pravidelnému sledování internetových diskusí a ke čtení článků v oboru. Lze se tam mnohému přiučit, rozšířit si obzory a občas také pomoci ostatním. Jenže dřív nebo později se člověk dostane do křížku s jinými diskutéry, pro které je čistota kódu a správnost řešení na prvním místě. 

Zde pak nastává neřešitelný problém, jelikož pravdu mají oba. V dnešním článku ukážu rozbor jednoduché situace a popíšu, jakými způsoby ji řešit a kdy je která možnost výhodnější. V žádném případě nechci nabádat, abyste svoji práci flákali. Nad každým zadáním je potřeba se zamyslet a přijít s řešením, jenž bude mít ten správný poměr čistoty a efektivity. I o tom se v článku zmíním. 

Dřív jsem také jsem patřil mezi zarputilé zastánce čistého kódu, který je napsaný tak, jak má být a přes to nejede vlak. Tento přístup mi ale vydržel asi měsíc, jelikož jsem velice rychle zjistil, že někdy na řešení prkotin prostě není čas... Zaměstnavatel chce webmastera, který umí kódovat správně, ale také rychle. A právě poměr těchto dvou veličin definuje, jak bude pro firmu přínosný.

Příklad

Mějme následující zadání: Na webu XY v sekci kontakty máme telefonní číslo, které bude na desktopu plain textem ale na mobilu jako odkaz s protokolem tel.

Řešení 1

Pomocí stylů za využití @media query.

.mobile_phone {display:none;}

@media all and (max-width: 640px){
	.mobile_phone {display:block;}
	.desktop_phone {display:none;}
}
<p class="mobile_phone">Tel.: <a href="tel:+420123456789">+420 123 456 789</a></p>
<p class="desktop_phone">Tel.: +420 123 456 789</p>

V čem je toto řešení dobré: mám to hotové za 5 minut včetně odpovědi na e-mail.
V čem je toto řešení špatné: rozlišování zařízení pouze podle šířky displeje nikdy nebude fungovat na 100%. V kódu jsou duplicitní informace.

Řešení 2

Podmínkou v PHP.

<?php if (!empty($is_phone)) { ?>
	<p>Tel.: <a href="tel:+420123456789">+420 123 456 789</a></p>
<?php } else { ?>
	<p>Tel.: +420 123 456 789</p>
<?php } ?>

V čem je toto řešení dobré: bude fungovat správně, vyvaruji se duplicity.
V čem je toto řešení špatné: můžu být hotový za 5 minut, ale také za hodinu. Pokud mám v systému dostupnou funkci, která správně naplní proměnnou $is_phone, pak není problém. Ten ale nastává v případě, kdy takovou funkci musím přidávat a testovat. Hodinu práce na změnu telefonu člověk prostě neobhájí.

Další nepříjemná situace může nastat v případě, že telefon je součástí sáhodlouhého textu, který se vypisuje z databáze. Automatická náhrada přes regulární výraz je cesta do pekel, takže nezbývá nic jiného, než se zkusit řešení jiné.

Řešení 3

Redakční systém přímo umožňuje nastavit jednotlivým blokům textu zobrazení na konkrétním zařízení. Pokud takovou možnost v systému máme, dospěli jsme k ideálnímu řešení. Pokud ji ovšem nemáme, jsme zase tam, kde jsme byli na začátku.

Jak tedy postupovat?

Odpověď není a nikdy nebude univerzální. Musíme vzít v potaz spoustu faktorů, časovou tíseň i povahu projektu, na kterém má být úkol realizován. Proto nevhodné řešení vždy nemusí znamenat, že by daný člověk pracoval (popřípadě radil) špatně.

Kdy vítězí rychlost

  • Projekt už je stejně zbastlený od předchozích webmasterů takže jakýkoli pokus o čistotu kódu ztrácí smysl. V plánu je redesign a jakákoli optimalizace stávajícího webu je zbytečná.
  • Jedná se o malého klienta, který aktualizuje stránky jednou za půl roku a ještě platí málo: moje práce má větší cenu, když čas strávím na jiném projektu.
  • Jsem natolik zahlcený prací, že každých 5 minut, které ušetřím, jsou pro mě nad zlato.
  • Sedím tu už 10 hodin a opravdu chci jít domů. Ne, tohle mi opravdu nemůže mít nikdo za zlé.

Kdy vítězí čistota řešení

  • Projekt je nový, vše je uděláno tak, jak se patří my a chceme, aby to tak i zůstalo.
  • Jedna se o velkého klienta, na jehož webu se pracuje téměř každý den a jakýkoli špatný krok způsobí nepříjemnosti do budoucna. Nebudu zbytečně přidávat práci kolegům.
  • Kdykoli, kdy na to mám dostatek času.

Tímto článkem samozřejmě nechci nikoho nabádat, aby svoji práci flákal. Špatný webmaster volí vždy rychlejší řešení. Dobrý webmaster umí správně rozhodnout, kdy má úspora času smysl.