Objektová orgie - Object orgy
tento článek příliš spoléhá na Reference na primární zdroje.Červen 2008) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v programování, objekt orgie je termín, běžný v Perl programovací komunita popisující běžné selhání (nebo anti-vzor ) v objektově orientovaný design nebo objektově orientované programování. V orgii objektu jsou objekty nedostatečně zapouzdřený přes skrývání informací, což umožňuje neomezený přístup k jejich vnitřním částem, což obvykle vede ke zvýšeným potřebám a problémům údržby a dokonce k neudržitelné složitosti.
Důsledky
Výsledkem orgie objektu je zejména ztráta výhod zapouzdření, včetně:
- Neomezený přístup znemožňuje čtenáři uvažovat o chování objektu. Důvodem je, že přímý přístup k jeho vnitřnímu stavu znamená, že s ním může manipulovat jakákoli jiná část systému, což zvyšuje množství zkoumaného kódu a vytváří prostředky pro budoucí zneužití.
- V důsledku obtížnosti uvažování design podle smlouvy je skutečně nemožné.
- Pokud mnoho kódů využívá nedostatek zapouzdření, výsledkem je těžko udržovatelné bludiště interakcí, běžně známé jako krysí hnízdo nebo špagetový kód.
- Původní design je zakryt příliš širokými rozhraními k objektům.
- Široká rozhraní ztěžují re-implementaci třídy bez narušení zbytku systému. To je obzvláště obtížné, když klienty třídy vyvíjí jiný tým nebo organizace.
formuláře
Zapouzdření může být oslabeno několika způsoby, včetně:
- Prohlášením interních členů za veřejné nebo poskytnutím bezplatného přístupu k datům prostřednictvím veřejného mutační metody (setr nebo getr).
- Poskytnutím neveřejného přístupu. Například viz: Modifikátory přístupu Java a úrovně přístupnosti v C#[1]
- v C ++, některým z výše uvedených prostředků a deklarací
příteli
třídy nebo funkce.
Objekt může také zpřístupnit svá interní data předáním odkazů na ně jako argumentů metodám nebo konstruktorům jiných tříd, které si mohou odkazy ponechat.
Naproti tomu objekty, které obsahují vzájemné odkazy, i když jsou někdy označovány jako forma orgie objektu, samy o sobě neporušují zapouzdření.
Příčiny
Členové mohou být prohlášeni za veřejní, aby se vyhnuli úsilí nebo syntaktické režii při poskytování správných přístupových práv pro ně. To může zvýšit čitelnost třídy, ale za cenu důsledků popsaných výše.
U některých jazyků může být člen, který má být čitelný jinými objekty, upravitelný, protože jazyk nemá žádný vhodný konstrukt pro přístup jen pro čtení.
Orgie objektu může být příznakem kódování nezralého designu, když návrhář nedostatečně analyzoval interakce mezi objekty. Může to také vzniknout z lenosti nebo spěchu při implementaci designu, zvláště pokud programátor nekomunikuje dostatečně s designérem, nebo z neochoty revidovat design, když nastanou problémy, což také podporuje mnoho dalších anti-vzorů.
Řešení
Obecně platí, že zapouzdření je přerušeno, protože to vyžaduje design jiných tříd a je nutný redesign. Pokud tomu tak není, může stačit překódovat systém podle osvědčených postupů. Jakmile budou rozhraní neodvolatelně publikována, může být příliš pozdě na jejich opravu.
Reference
- ^ MSDN: Úrovně přístupnosti, Visual Studio .NET 2003 Archivováno 2008-04-17 na Wayback Machine ).