Čím víc argumentů, tím víc adidas

Nedávno mě hrubě vyrušil z odpoledního zažívání nepěkný nález. Při procházení kódu jedné z našich interních knihoven se mi naskytla tato podívaná:

A proto, prosím, stop šestnácti a více argumentům konstruktoru a to i ve spěchu.

Článek obsahuje 2 komentáře

  • devák

    1
    V čem je konkrétně chyba? Kolik parametrů je ještě v pořádku? Jak by měl vypadat správný postup (něco jako SomeDataSource().baseClass(bc).folder(fldr).filter(fltr).instance()) ?
  • Jan Simek

    2
    Chyba neni v nicem, jen mi prijde, ze 16 je prece jen trochu moc. Zalezi samozrejme na vkusu kazdeho jednotlivce, ja osobne zacinam problem s metodami, ktere maji vic nez 5 argumentu.

    Reseni builderem, ktere jste navrhoval vy, je asi nejlepsi a nejelegantnejsi(ani se nemusi na zaver volat metoda instance(), pokud by metody baseClass(), folder(), ... vracely primo modifikovanou instanci one tridy).

    Postacilo by i mit nejake rozumne default hodnoty a nastavovani nechat na settery, pripadne mit nejake zapouzdrovaci objekty, ktere ponesou sadu argumentu a ty pouzit jako argumenty.