Přetížení funkce, nebo předdefinované hodnoty? rubrika: Programování: Jiné

9 Taco
položil/-a 7.7.2014

Jak byste posoudili rozdíly a výhodnost mezi:

Parametry s předdefinovanými hodnotami, jako:

func foo(a, b = 2, c = False)

nebo:

func foo(a)
func foo(a, b)
func foo(a, b, c)

Co je podle vás lepší/šikovnější/výhodnější? A samozřejmě hlavně proč.

odkaz
9 Taco
odpověděl/-a 7.7.2014

Já se přikláním spíše k druhé variantě, protože:

  • Nemusím ifovat, v každé funkci se soustředím jen na ten jeden problém.
  • Mohu vytvářet libovolné kombinace parametrů, které by v případě předdefinovaných hodnot nešli (samozřejmě neplatí v případě jazyka umějící pojmenované parametry).

Komentáře

  • Jakub Macek : Na základě zkušeností s jazyky, kde jde jenom první, kde jde jenom druhé a kde jde oboje, jsem postupně došel k závěru, že je praktičtější druhá varianta. Sice to dá víc práce napsat, takže se človeku nechce, ale u první varianty zjištuju, že chci často jeden z argumentů "přeskočit" s výchozí hodnotou, ale nevím zpaměti jaká to je. Navíc když někdo tu výchozí hodnotu změní, tak v mém kódu je pořád ta stará. Samozřejmě druhá varianta má smysl jenom tam, kde je statické typování, takže na pohodlnost celé věci mají spíš vliv tyto důvody. 7.7.2014
  • Taco : "chci často jeden z argumentů "přeskočit" s výchozí hodnotou ... v mém kódu je pořád ta stará" -- dobrej postřeh, díky. Přesně kůli tomu jsem se ptal. 7.7.2014

Pro zobrazení všech 10 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.