it-swarm-eu.dev

Jak vysvětlíte Rozdělení obav ostatním?

Pokud byste měli kolegu, který nerozuměl výhodám oddělení obav, nebo nerozuměl dost, aby se důsledně uplatňoval ve své každodenní práci, jak byste jim to vysvětlili?

37
Marcie

Představte si, že máte program, který byl vydán. Zákazník přijde a nabídne vám zaplatit za vylepšení jedné z jeho funkcí. Chcete-li získat peníze, budete muset změnit program přidat novou funkci. Některé z věcí, které ovlivní, jaká je vaše zisková marže, jsou:

  1. kolik kódu musíte změnit
  2. jak snadné je provést změny
  3. jak je pravděpodobné, že rozbijete stávající funkce, které používají ostatní zákazníci
  4. kolik můžete znovu použít stávající model/architekturu

Oddělení obav vám pomůže získat kladnější odpovědi na tyto otázky.

  1. pokud je veškerý kód pro určité chování aplikace oddělený, budete muset změnit pouze kód přímo spojený s vaší novou funkcí. Který by měl být menší kód pro změnu.
  2. pokud jsou chování, která vás zajímají, úhledně oddělena od zbytku aplikace, je pravděpodobnější, že budete moci vyměnit novou implementaci, aniž byste museli úplně porozumět nebo manipulovat se zbytkem programu. Mělo by být také snazší zjistit, který kód potřebujete změnit.
  3. Kód, který nemusíte měnit, je méně pravděpodobně narušen než kód, který změníte. Rozdělení obav vám proto pomůže zabránit rozbití nesouvisejících funkcí tím, že vám zabrání v nutnosti měnit kód, který by mohli volat. Pokud jsou vaše funkce smíchány dohromady, můžete změnit chování jedné náhodou a pokusit se změnit jinou.
  4. Pokud je vaše architektura agnostická k technickým nebo obchodním logickým detailům, je méně pravděpodobné, že by změny v implementaci vyžadovaly nové architektonické prvky. Například, pokud je vaše logika hlavní domény agnostická, pak podpora nové databáze by měla být stejně snadná jako výměna v nové implementaci vrstvy perzistence.
53
flamingpenguin

Podívejte se na nemocnici a přemýšlejte o všech různých rolích, které se podílejí na poskytování péče o pacienta: sestry tří lékařů, lékaři, zdravotníci, technici, administrativní pracovníci, kavárny atd.

Existuje někdo, kdo ví, jak všichni z těchto lidí vykonávají svou práci? Ne, protože by to bylo ohromující. Musí rozdělit různé odpovědnosti do odlišných rolí a styčné body mezi těmito rolemi jsou velmi specifické.

10
RationalGeek

Pokud pracuje v kanceláři, vezměte to jako příklad, vysvětlete roli každého štábu v této kanceláři a zeptejte se ho, co by se stalo, kdyby tyto štáby nebyly rozděleny podle své práce?

5

Podíval bych se na to, jak se mu nepodařilo aplikovat SoC ve svém kódu/designu, a proměnil to v příklad skutečného světa, s nímž se může vztahovat, a to je zjevně nežádoucí.

Například, pokud má třídu, kde klient potřebuje poskytnout několik informací, které nejsou pro tyto klienty relevantní, použil bych analogii pekařství, kde si musíte přinést vlastní zrna a droždí, pokud si chcete koupit chléb.

1