Kód by měl odpovídat popisu přirozeným jazykem
TLDR: Bohužel nemáme. Prostě si to přečti, zabere to 2 minuty.
Příklad
Juniorní kolega jednou napsal následující kód:
public string NameShortener(string name)
{
var newName = ShortenNameTo5Characters(name);
if (name.Contains("OurCompanyName"))
{
newName = name;
}
return newName;
}
Kód jde napsat o něco jednodušeji, třeba takto:
public string NameShortener(string name)
{
if (name.Contains("OurCompanyName"))
{
return name;
}
else
{
return ShortenNameTo5Characters(name);
}
}
Jak byste ale vysvětlili, co je na první ukázce špatně?
Osobně jsem dlouho nedokázal zformulovat, co je na ní špatně. Z mého pohledu neporušuje žádné mně známé pravidlo dobrého kódu. Jediné, co by se dalo vytknout, je horší performance, ale ta v tomto případě není podstatná.
Po čase jsem přišel s následujícím pravidlem:
Kód by měl odpovídat popisu přirozeným jazykem
Kdybychom druhou ukázku popisovali češtinou, tak bychom řekli něco jako: “Pokud jméno obsahuje OurCompanyName
, tak ho nezkracujme. Všechna ostatní jména zkraťme.”
První ukázku bychom do češtiny mohli přeložit nějak takhle: “Zkrátíme jméno, a pokud obsahuje OurCompanyName
, tak ho nastavíme zpět na původní hodnotu.”. To zní velice zvláštně - je to taková věta, kterou by nikdo nikdy v běžném životě neřekl. A to je přesně problém první ukázky.
Přirozený jazyk
Přirozený jazyk je důležitý, jelikož je to způsob, jakým běžně přemýšlíme. Pokud kód vypadá jinak, než jak ho popisujeme v češtině, tak musíme více přemýšlet.
Výjimky
Je zřejmé, že kód nemůže vždy odpovídat přirozenému jazyku, ale i přesto bychom se měli vždy snažit se mu alespoň co nejvíce přiblížit.
Závěr
- Pište kód tak, jak byste ho popisovali přirozeným jazykem.
- Lépe se čte a je srozumitelnější.