442
« kdy: 08. 11. 2019, 08:17:30 »
Já bych taky doporučoval vystříhat se zobecňování.
Viděl jsem programy "lidí z praxe", kteří vystudovali jiný obor. Jakmile systém přesáhne určitou velikost, často nevědí moc co s tím, protože jim scházejí zkušenosti, nemají to osahané ani odkoukané. Programování je řemeslo úplně odlišné od jiných a jeho znalost nedá se nahradit ani selským rozumem ani vysokým IQ, vyjma prdlikání prográmků o pár tisících řádek. Mimochodem, lidé z jiných oborů, kteří mají ultravýkonný mozek, sice nevrství abstrakce, ale zase občas píší špagetový kód, ve kterém se vyznají přinejlepším oni sami a udržovatelnost je mizivá.
Co se týče "zbytečných" abstrakcí, je to otázka míry a odhadu. Kolikrát jsem zažil situaci, kdy kolegové tíhli k "custom" implementaci, pak se udělal jeden copy/paste, pak druhý, pak další a už to šlo tak nějak ze zvyku a když to po nich někdo přepíše, málem aby si za to dal facku, když "to přece takhle funguje" a "proč to neudělat zase tak, když máme dost jiné práce". Že se to pak další měsíce a roky s úspěchem dělá ponovu a co se řešilo kopírováním funkce o 100 řádcích nebo větší třídy, je teď na jedno volání, už nikdo nevidí, protože se to "teď dělá takhle, no". Nebo ty abstrakce daný tým znovupoužívá v dalších a dalších produktech, ale to už jaksi není vždycky vidět. No a navíc - dobře zvolená a napsaná abstrakce kód nemůže znepřehlednit. Naopak by měla vést k tomu, že se pořád dokola řeší pár řádek namísto špagetového monstra, kde "všechno souvisí se vším" a "nic není navíc".
Že je abstrakce nástroj, který může být použit špatně? Ale jistě, jako každý nástroj!