Kód by měl odpovídat popisu přirozeným jazykem

1 min

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ší.