Přestaňte se snažit být tak suchý, místo toho napište vše dvakrát (mokré)

jako vývojáři často slyšíme klišé fráze hozené kolem jako „neopakujte se“. Takové nápady bereme a běháme s nimi, někdy až příliš daleko.

krok zpět a vyhodnocení, proč tyto věci děláme, je užitečné. Dnes se tedy podívejme na alternativní ideologii suchého programování.

SUCHÉ je definována (podle Wikipedie) jako:

Každý kousek znalostí musí mít jednotné, jednoznačné, autoritativní reprezentaci v systému.

některé z nich mohou být trochu pedantské, ale to může být užitečné při zvažování něčeho takového. Pojďme rozebrat části frázování tam.

každý kus

Co je „každý kus“? Nemůžeme nikdy opakovat název proměnné? HTML entita?

Ok, ok. Takže můžeme opakovat <div>je to bez velkého problému a nemyslím si, že by se na to někdo urazil. Ale to vyvolává otázku-kdy se rozhodneme, že se něco stalo „kusem poznání“? V Reakci, dobrým příkladem může být složka, ale je to PrimaryButtonSecondaryButton nebo to znamená zobecněné Button class? Odpověď je obecně považována za „bez ohledu na to, co si vaše organizace vybere“, ale to může stále zanechat trochu nejednoznačnosti kolem toho, co se rozhodneme abstraktně.

znalosti

Toto je další nejednoznačný bod-co definujeme jako znalosti? Zvažte stylizovaný prvek tlačítka pomocí některých atomových tříd a reagujte. Pokud to trvá senior dev 10 sekund vytvořit, nemusí považovat, že znalosti stojí za abstrahování. Ale pro mladšího vývojáře, který systém dobře nezná, by tyto znalosti mohly být dobrou abstrakcí. V opačném případě budou muset hledat třídy, připomenout si, jak tlačítka fungují, a zjistit syntaxi pro onClick. Znalosti jsou relativní a jejich použití v definici přidává nejednoznačnost.

aktualizace: Xander zanechal následující komentář níže. Myslím, že tento článek dělá skvělou práci při vysvětlování toho, co by“ znalosti “ měly znamenat.

jen jsem to chtěl nechat tady pro lidi, kteří mají zájem.

„SUCHÉ je o Poznání duplicitu Kódu, není problém.“
verraes.net/2014/08/dry-is-about-k…

jednoduché, jednoznačné, autoritativní zastoupení

„jeden“ reprezentace ponechává hodně být požadovaný. Z pohledu inženýra devops může být jediná reprezentace celá aplikace, kterou potřebují k nasazení. Pro frontend dev, to může být součást. A pro backend dev, to může být metoda na třídě nebo koncovém bodě API. Kde se nakreslí čára?

máme také slovo „jednoznačné“ – ale jak jsem právě zdůraznil, zbytek této věty definuje více nejednoznačnosti. „Autoritativní“ dává smysl – váš suchý kód by měl přesně definovat, co dělá, a být věrný této definici. To však není výslovně omezeno na suchý kód.

system

konečně máme světový „systém“ – To se vrací k“ jednotnému “ prohlášení, o kterém jsme diskutovali před vteřinou. Co je to „systém“? V React to může být komponenta nebo Redux action / component/reducer. V kontejnerizovaném softwaru bychom mohli mluvit o celém modulu nebo jen o jedné instanci.

na konci dne DRY all to často podporuje předběžnou optimalizaci, což je zbytečné a někdy skutečně bolí vaši schopnost psát kód. Někdy je obtížnější upravit abstrahovanou komponentu tak, aby odpovídala konkrétnímu případu použití. Přidáte spoustu složitosti nebo tuto komponentu rozdělíte na něco nového-což není super suché. První den nemůžete znát každý případ použití komponenty.

alternativa-napište vše dvakrát (mokré) programování

místo toho navrhuji mokré programování. Pro mě by definice byla:

můžete se zeptat sami sebe „nenapsal jsem to předtím?“dvakrát, ale nikdy třikrát.

s touto definicí se zaostření vzdaluje předčasné optimalizaci a místo toho umožňuje opakovat podobný kód několikrát. To také přesouvá zaměření na více střevní reakce. Umožňuje vám rozhodovat se na základě přesného případu použití, na který se díváte. Pokud vytváříte webovou aplikaci, pravděpodobně budete chtít abstraktní tlačítka do komponenty, protože budete používat mnoho z nich. Ale pokud existuje jedna stránka, která má nějaký speciální styl (možná cenová stránka?), pak se nemusíte příliš starat o abstrahování komponent na této stránce. Ve skutečnosti, v rámci tohoto systému, pokud jste potřebovali novou stránku, která byla podobná této speciální stránce, stačí zkopírovat/vložit a změnit kód, který potřebujete. V okamžiku, kdy se to stane potřetí, je však čas strávit trochu času abstrakcí částí, které lze abstrahovat.

také bych přidal toto ustanovení (pro mokré i suché programování):

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.