Shrnutí problému:
Dlouhý příběh krátký, zdědil jsem kódovou základnu a vývojový tým, který nesmím vyměnit, a použití Božích objektů je velkým problémem. Do budoucna chci, aby se nám proměnily věci, ale dostávám zpět od týmů, které chtějí dělat všechno s God Objects „protože je to jednodušší“, což znamená, že bych neměl dovoleno proměňovat. Odsunul jsem s odvoláním na své dlouholeté zkušenosti s vývojem, že jsem nový šéf, který byl najat, aby věděl o těchto věcech atd., A stejně tak i obchodní zástupci offshore společností třetích stran vedli obchodní zástupce, a to je nyní na výkonné úrovni a mé schůzce je zítra a já chci jít se spoustou technické munice, abych prosazoval osvědčené postupy, protože mám pocit, že to z dlouhodobého hlediska bude levnější (a já osobně mám pocit, že to je to, čeho se třetí strana obává) pro společnost.
Můj problém je z technické úrovně, vím, že je to dobré z dlouhodobého hlediska, ale mám potíže s ultra krátkodobým a 6měsíčním obdobím, a přestože je to něco, co „vím“, nemohu to dokázat odkazy a citované zdroje mimo jednu osobu (Robert C. Martin, aka Uncle Bob), protože to je to, co se od mě žádá, protože mi bylo řečeno, že mám údaje od jedné osoby a pouze jedna osoba (Robert C Martin) není dost dobrý argument.
Otázka:
Co jsem Zdroje, které mohu přímo citovat (název, rok vydání, číslo stránky, citát) známých odborníků v oboru, kteří výslovně říkají, že toto použití „božích“ objektů / tříd / systémů je špatné (nebo dobré, protože hledáme nejvíce technicky platné řešení)?
Výzkum, který jsem již provedl:
- Mám zde řadu knih a prohledal jsem jejich rejstříky, aby bylo možné použít slova „bůh“ a „bůh“. Zjistil jsem, že je to kupodivu téměř nikdy nepoužité a kopie knihy GoF, kterou mám, ji například nikdy nepoužívá (Alespoň podle indexu přede mnou), ale našel jsem ji ve dvou níže uvedených knihách, ale chci více Mohu použít.
- Zkontroloval jsem stránku Wikipedie na „God Object“ a v současné době je to útržek s malými referenčními odkazy, takže i když já osobně Souhlasím s tím, že říká, že nemá moc, co bych mohl použít v prostředí, kde osobní zkušenost není považována za platnou. Citovaná kniha je také považována za příliš starou na to, aby ji lidé, s nimiž diskutuji o těchto technických bodech, považovali za argument dělají, že „kdysi se to považovalo za špatné, ale nikdo to nedokázal, a nyní moderní software říká, že„ božské “objekty jsou dobré k použití.“ Osobně se domnívám, že toto tvrzení je nesprávné, ale chci dokázat pravdu , ať je to cokoli.
- V Robertu C Martinovi „Agilní principy, vzory a praxe v C #“ (ISBN: 0-13-185725-8, vázaná kniha) na straně 266 se uvádí „Každý ví, že bohové jsou špatný nápad. Nechceme soustředit veškerou inteligenci systému do jediného objektu nebo jedné funkce. Jedním z cílů OOD je rozdělení a distribuce chování do mnoha tříd a mnoha funkcí. “ – A pak dále říká, že někdy je lepší někdy použít God Classes (jako příklad lze uvést mikrokontroléry).
- V Robert C Martin „Clean Code: A Handbook of Agile Software Craftsmanship“ „strana 136 (A pouze tato stránka) hovoří o„ třídě Boha “a označuje ji za ukázkový příklad porušení pravidla„ třídy by měly být malé “, které používá k prosazování zásady jednotné odpovědnosti, počínaje od strany 138. .
Problém, který mám, je, že všechny mé reference a citace pocházejí od stejné osoby (Robert C. Martin) a jsem od stejné osoby / zdroje. Bylo mi řečeno, že protože je to jen jeden pohled, moje touha nepoužívat „God Classes“ je neplatná a není akceptována jako standardní osvědčený postup v softwarovém průmyslu. Je to pravda? Dělám věci z technického hlediska špatně tím, že se snažím dodržovat učení strýčka Boba?
Boží objekty a objektově orientované programování a design:
Čím víc na to myslím, tím více si myslím, že je to něco, co se naučíte při studiu OOP a nikdy to není výslovně vyvoláno; jeho implicitní význam pro dobré design je moje myšlení (neváhejte mě opravit, prosím, jak se chci naučit), problém je, že to „vím“, ale ne každý to dělá, takže v tomto případě to není považováno za platný argument, protože efektivně volám je to jako univerzální pravda, když ve skutečnosti většina lidí o tom statisticky nevědí, protože statisticky většina lidí není programátor.
Závěr:
Jsem ztracen v tom, co hledat získat ty nejlepší další výsledky, které je třeba citovat, protože dělají technické tvrzení a já chci znát pravdu a být schopen ji dokázat citacemi jako skutečný inženýr / vědec, i když jsem zaujatý vůči božským objektům kvůli mým osobním zkušenosti s kódem, který je používal. Jakákoli pomoc nebo citace by byla hluboce oceněna.
Komentáře
- Požádejte je o dokumentaci Božích předmětů jako osvědčený postup.
- Utéct! Nechcete ‚ tam pracovat.
- Definujte prosím své chápání “ Božího objektu “ a jak souvisí s vaší otázkou. Strávíte 4 odstavce a říkáte, že Boží třída není ‚ standardním pojmem v literatuře. Tak proč to používáte? Používáte-li standardní oborové výrazy a můžete ukázat, jak se tyto koncepty vztahují na váš aktuální projekt, můžete některé lidi přesvědčit o svém smyslu. Používání smyšlených slov na obchodní schůzce jen podkope váš argument. Průmyslové standardní výrazy existují – nejste ‚ t první osobou, která kdy viděla noční můru všeho globálního nebo jediného objektu, nebo cokoli, co se snažíte popsat.
- ‚ Chybí vám výraz “ antipattern „. Vyhledávání Google “ god object antipattern “ vrátí tuny stránek z důvodů, proč ‚ špatné.
- Neměli byste ‚ útočit na božský objekt, ale na problémy, které vytváří. Jako: máme velmi těsné spojení mezi vším a změna v A vyžaduje také změny v B, C a D. Takže, abychom proti tomu pomohli, ‚ se chystáme extrahovat třídy. Nebo: chceme, aby byl kód v testovacím rámci, a nemůžeme to ‚ udělat, co budeme dělat? Zkuste také nepoužívat výraz “ Bůh „, lidé, kteří nejsou vnímaví, si budou myslet, že ‚ znovu používáme hyperboly.
Odpověď
Případné změny v praxi spočívají v identifikaci bodů bolesti vytvořené stávajícím designem. Konkrétně musíte identifikovat, co je těžší, než by mělo být kvůli existujícímu designu, co je křehké, co se nyní zlomí, jaké chování nelze jednoduše implementovat jako přímý (nebo dokonce poněkud nepřímý) výsledek aktuální implementace, nebo v některých případech, jak trpí výkon, kolik času trvá, než se nový člen týmu dostane do tempa atd.
Zadruhé, pracovní kód zvítězí nad všemi argumenty ohledně teorie nebo dobrého designu . To bohužel platí i pro špatný kód. Takže budete muset poskytnout lepší alternativu, což znamená, že jako obhájce lepších vzorů a postupů budete muset refaktorovat, abyste mohli vylepšit lepší design. Najděte úzkou rovinu ve stylu stopovací kulky skrz existující design a implementujte řešení, které možná pro iteraci jeden udržuje implementaci objektu god funkční, ale odloží skutečnou implementaci do nového designu. Poté napište nějaký kód, který využije výhody tohoto nového designu, a ukažte, co díky této změně vyhrajete, ať už jde o výkon, udržovatelnost, funkce, opravu chyb nebo podmínky závodu nebo snížení kognitivní zátěže pro vývojáře.
Vyhledat dostatečně malou plochu k útoku ve špatně navržených systémech je často výzvou, může trvat déle, než byste chtěli dodat nějakou počáteční hodnotu, a počáteční výplata nemusí být tak působivá všem, ale můžete také najít nějaké obhájce svého nového přístupu, pokud se s ním spojíte s členy týmu, kteří jsou alespoň trochu sympatičtí.
Lamenting the God Object funguje pouze tehdy, když kážete sbor. Je to nástroj pro pojmenování problému a jeho řešení funguje, pouze když získáte vnímavé publikum, které je starší a dostatečně motivované, aby s tím něco udělalo. Oprava objektu God vyhrává argument.
Vzhledem k tomu, že vaším bezprostředním zájmem se zdá být buy-in pro výkonné pracovníky, myslím, že je nejlepší vytvořit případ, že nahrazení tohoto kódu musí být strategickým cílem a svázat je s obchodními cíli, za které jste zodpovědní. může vytvořit případ, že můžete určit nějaký technický směr tím, že nejprve budete pracovat na technickém špičce toho, co by podle vás mělo být provedeno jako jeho náhrada, nejlépe pokud jde o zdroje od jednoho nebo dvou technických lidí, kteří mají výhrady k aktuálnímu designu.
Myslím, že jste našli dostatek zdrojů, abyste svůj argument ospravedlnili; lidé na takových setkáních budou věnovat pozornost pouze shrnutí vašeho výzkumu a přestanou poslouchat, až zmíníte dva nebo tři potvrzující zdroje.Zpočátku byste se měli zaměřit na získání odkupu za vyřešení problému, který vidíte, a ne nutně prokázat, že se někdo jiný mýlí nebo že máte pravdu. Jedná se o sociální problém, nikoli o logický.
V roli vedoucího v oblasti technologie musíte spojit jakoukoli ze svých iniciativ s obchodními cíli, takže nejdůležitější věcí pro vedení případu je to, co pro tyto cíle bude práce provedena. Protože jste také považováni za „nového chlapa“, nemůžete jen očekávat, že lidé zahodí svou práci, nebo očekávají, že rychle padnou do řady; musíte si vybudovat určitou důvěru tím, že prokážete, že dokážete splnit. Z dlouhodobého hlediska se ve vedoucí roli musíte také naučit soustředit se na výsledky, ale nemusí to nutně souviset se specifiky výsledku. Nyní jste zde, abyste poskytli strategické vedení, odstranili taktické překážky pokroku vašeho týmu a nabídli týmu mentorství, nikoli vyhrávali bitvy o důvěryhodnost se svými vlastními členy týmu.
Rozhodnutí shora dolů bude zřídka být důvěryhodný, pokud nemáte ve hře nějaký skin; pokud jste v podobné situaci znovu a znovu, měli byste se více zaměřit na budování konsensu ve vaší organizaci než na eskalaci, jakmile máte pocit, že se situace vymkla kontrole.
Ale vzhledem k tomu, kde právě jste, říkám, že nejlepším řešením je tvrdit, že váš přístup přinese měřitelné dlouhodobé výhody na základě vašich zkušeností a že je v souladu s prací známých odborníků, jako jsou strýc Bob a spol., a že byste chtěli strávit několik dní / týdnů příkladem v úzkém refaktoringu aspektu nejvyšší ofenzivy, abyste předvedli, jak by měl vypadat váš pohled na dobrý design. V každém případě však budete muset přizpůsobit konkrétní obchodní cíle nad rámec svých osobních preferencí.
Komentáře
- Dobrá věc, že jde o sociální problém. Musí být důvod, proč je tolik špatného napsaného kódu a špatně navržených aplikací.
- +1 pro jeho propojení s ‚ business speak ‚ jako takové; usilujte o to, aby to bylo pro vaše publikum co nejrelevantnější. Pokud ‚ hovoříte s vedoucími pracovníky, udělejte hovořte o tom, jak má standard kódu přímou souvislost s údržbou a výkonem, a diskutujte o tom, jak to souvisí s celkovými financemi projektu, dlouhodobou stabilitou atd. Zní to jako vy byli jste najati kvůli vašim znalostem; pamatujte si to. (Jen se ‚ nestaňte manažerem blbec-off, který si myslí vždy to ví nejlépe – ale v tomto případě jste ‚ znovu 100% správný.)
- +1 pro “ pracovní kód zvítězí nad jakýmikoli argumenty o teorii nebo dobrém designu. “ Něco, na co při své výpravě často zapomínáme pro dokonalý kód.
- Skvělá odpověď, spousta moudrosti pro aspirující vedoucí týmu.
Odpověď
Nejprve musíte prokázat, že každá měřitelná organizace musí přijmout osvědčené postupy v oboru. Říká, že „to pro nás prostě funguje!“ nelze měřit ani v čase, ani ve zdroji, protože je to prostě nepředvídatelné. Softwarové inženýrství je věda stejně jako jiné vědecké obory a tyto koncepty byly studovány, zkoumány, testovány a dokumentovány.
-
the God Object je anti-pattern , který uvádí, že
V softwarovém inženýrství je anti-vzor (nebo antipattern) vzor používaný v sociálních nebo obchodních operacích nebo softwarovém inženýrství, který může být běžně používán, ale je v praxi neúčinný a / nebo kontraproduktivní.
-
Na konferenci Google IO v roce 2009 bylo toto téma částečně vysvětleno, když se MVP vzor byl vysvětlen. Nemusí to být relevantní pro Boží předmět, ale může vám to dát trochu munice.
-
Použití tohoto anti-vzoru také porušuje princip jediné odpovědnosti v objektově orientovaných vzorech, který uvádí, že:
každá třída by měla mít jedinou odpovědnost a tato odpovědnost by měla být zcela zapouzdřen ve třídě. Všechny její služby by měly být úzce sladěny s touto odpovědností.
-
Blog Decaying Code také hovoří o tomto a o jeho řešení.
-
Nemůžeme mluvit o principu jediné odpovědnosti, aniž bychom mluvili o objektu propojení .
[…] propojení nebo závislost je míra, do jaké se každý programový modul spoléhá na každý jeden z dalších modulů.
Kde mít těsně spojený systém může způsobit
assembly of modules [to] require more effort and/or time [to maintain] due to the increased inter-module dependency.
Vyšší úroveň propojení objektů znamená menší soudržnost a naopak. Boží objekty jsou dobrým příkladem těsného propojení, protože vědí víc, než by měly, a tak je přetěžuje odpovědností, čímž výrazně omezuje opětovnou použitelnost kódu. -
Při navrhování složité aplikace jednoduchost musí přijít na mysl. Velké problémy musí být rozloženy na menší, které lze snáze spravovat, testovat a dokumentovat. To platí zejména v objektově orientovaném paradigmatu.
S tímto argumentem provádíme smyčku zpět k anti-vzorovému argumentu, ale toto paradigma je o vzorcích, reprezentaci objektů v reálném světě a konečně o datech zapouzdření.
-
Máte pravdu, když říkáte, že tyto „osvědčené postupy“ existují více v učebnách. Mám však zkušenosti s výukou na vysoké škole (a na některých univerzitách) a tyto principy jsem viděl pouze na univerzitách, zejména na technických fakultách. Což je smutné. Ale jako každý dobrý postup, i ti, kteří se snaží zlepšit sami sebe, se obvykle naučí některé základní návrhové vzory a nakonec pochopí, jak přecházet mezi spojováním a soudržností.
To, co studenty obvykle učím, je to, že může to vyžadovat více úsilí k přijetí dobrých programovacích standardů, ale vždy se to dlouhodobě vyplatí. Dobrým příkladem může být někdo, kdo požádá programátora, aby napsal funkci řazení. Programátor má dvě možnosti; 1) napsat funkci rychlého třídění bublin (méně než 5 minut), která nebude udržitelná, jak bude seznam prvků narůstat, nebo 2) napsat složitější (aka optimalizovaný) algoritmus třídění (rychlé třídění atd.), Který bude lépe škálovat s většími seznamy.
Komentáře
- Objektově orientované programovací jazyky často vyžadují, aby byly odpovědné dvě nezávislé zdrojové sestavy pro různé aspekty chování objektu ‚ je nutné vytvořit nezávislé instance objektu, které toto chování zapouzdří. Bohužel, i když se v mnoha případech nejlogičtější členění funkcí mezi sestavami kódu neshoduje s nejlogičtějším členěním funkčnosti mezi instancemi objektů, I ‚ Neviděl jsem příliš mnoho diskusí o rozlišování dvou druhů dělení.
- Věřím, že je to pro tuto otázku trochu mimo téma. ‚ zde nemluvíme o anti-vzoru Božího objektu, ale o kódové vazbě a soudržnosti, což je téma velmi široké a velmi subjektivní.
Odpověď
No, jdeme na to, vyvrtám další starou otázku, ale hádám, že jsi tento argument nevyhrál a tady je proč.
Zní to jako kulturní problém
Jste jejich Správce, ale nemůžete je nahradit a musíte se obrátit na své manažery, aby je přiměli dělat to, o čem si myslíte, že by měli dělat, což v tomto případě předpokládám je přinejmenším srazit s božími objekty vpřed. Zní to jako klasický případ kódu, který zrcadlí kulturu, ve které se narodil. Jinými slovy, božským objektem je to, jak tato společnost funguje. Chcete provést jakoukoli smysluplnou změnu? Vždy pro ni chodíte na stejné místo nakonec, protože všechna rozhodnutí musí být zjevně vyřešena nahoře.
Poté, co byl p Rivy na několik neúspěšných pokusů o vyčištění starších kódů a změny zásad kódu Jsem nyní toho názoru, že nemůžete bojovat proti kultuře, která umožnila tento kód, když je tato kultura stále pevně zakořeněná nebo přinejmenším bojová kultura je velmi tvrdý slogan, že je nepravděpodobné, že by mi někdo někdy mohl dostatečně zaplatit nebo dát dost síly, abych měl pocit, že to bylo užitečné úsilí, které pravděpodobně ještě někdy uspěje.
Než bude možné změnit, musí být motivováni ke změně a bohužel jako programátoři, kteří mají dost času číst občas Stack, je pro nás těžké pochopit, že ne každý je motivován stejnými věcmi. Ve svých zkušenostech jsem vyhrál spoustu racionálních argumentů, ale na konci dne společnost z nějakého důvodu trpí intelektuálně línými vývojáři.
Možná, že obchodní zájmy byly motivovány k tomu, aby myslely spíše na zítřek než na příští týden nebo pět let ven (obzvláště frustrující scénář, když jste dítětem přistěhovalců ze země, která v případě apokalypsy postavila v Arktidě trezor semen). Možná se bojí změn.Možná si nadměrně váží seniority do té míry, že velení je nesmyslné, i když se musí najímat zvenčí, aby přivedli vedoucího nebo manažera vývojového týmu, protože si uvědomují, že nikdo v jejich all-life týmu v jejich době dostatečně nevyrostl. tam (nebo proto, že zmínění doživotní lidé nechtějí riziko spojené s odpovědností). Nebo, a já jsem to viděl, možná je to „velmi skutečný a depresivní fenomén průměrnosti, který se prosazuje, protože hluboko uvnitř ví, že může“ Nesoutěžíte s kvalitou a když je tu dost bláznivých věcí, které to dokážou obejít, je nemožné zjistit, kdo je vinen, když se všechno pravidelně rozpadá.
Jak bojujete proti problémům, které jsou nakonec zakořeněny ve strachu nebo nefunkční metriky pro úspěch? Řeknu vám to, vyžaduje to mnohem víc, než dokonce oddaný tým kvalitních vývojářů, a vy jste toho měli mnohem méně, než zvuk v době, kdy byl tento Q zveřejněn.
V případě, že to není nemožná událost, není to problém s neochvějnou kulturou …
Nyní předpokládejme, že lidé nahoře jsou velmi vstřícní ke změnám a jsou skutečně ochotni vám věřit, že to zvládnete, stačí jen vyložit všechny vaše argumenty penězi a ztracenou příležitostí.
Pokaždé, když někoho zaškolíte, trvá déle novinka v této směšné základně kódů, pokaždé, když trvá déle upravit nebo přidat k něčemu novou funkci, pokaždé, když je prohibitivně obtížné vystavit koncové body jinému systému od společnosti, se kterou chcete uzavřít partnerství, stojí to peníze. Nejdůležitější je, že nechává otevřené okno pro menší, hbitějšího konkurenta, který se může vrhnout, a postaví vás do situace, kdy vše, co můžete udělat, je reagovat na ně příliš daleko Wly, a nakonec to všechno od sebe odtrhněte.
Jen si uvědomte, že obzvláště tvrdohlavá a hloupá kultura udrží status quo za každou cenu, i když skutečná fyzická střecha společnosti je ve skutečnosti v ohni, protože toho.
Komentáře
- Krátce poté jsem opustil společnost. pokusili se mě najmout na plný úvazek a přinutit mě přestěhovat se do NY ze Seattlu, abych nabídku přijal; V podstatě jsem jim řekl “ V žádném případě se nebudu stěhovat do NY, když bude tým, který řídím, v Bellevue, WA “ a v tom okamžiku jsem v podstatě přešel ulici a dostal práci na MSFT, dokud jsem nenašel něco lepšího.
- @honestduane Jo, ta sada očekávání sám mluví hodně. Dobré pro GTFO.
Odpověď
Můžete uvést některé z nejzákladnějších principů OOP, jako je volné spojení a vysoká soudržnost. „Bůh objekt“ zní, jako by spojoval nesouvisející třídy a má nízkou soudržnost.
Odpověď
Vždy se můžete zeptat samotného strýčka Boba .
Jde o to, že je to tak zřejmé lidem v jakémkoli smyslu, že jakmile je to vysvětleno, není třeba na něj znovu odkazovat mnoho autorů. Je třeba pouze jeden zdroj.
Další pojmy, které byste mohli začít hledat při hledání zdrojů, jsou:
- SOLID
- Law of Demeter
- Big Ball of Mud
Všechny tyto pojmy vyjadřují související pojmy, které by mohly přinést životaschopné referenční zdroje, i když to tak vlastně nepojmenují.
Nakonec „Jste však šéf. Důvodem je to, že to říkáte, a přestože byste měli být považováni za dobrého manažera, měli byste být opravdu připraveni zdůvodnit svá rozhodnutí; udělali jste to, a pokud stále existuje odpor, správný postup je v tom, aby váš tým udělal to, co mu bylo řečeno.
Komentáře
- “ pokud stále existuje odpor, je správný postup vašeho týmu provést tak, jak ‚ řekl “ Možná je správný postup ukončit, než aby byl váš tým nešťastný ..?
- Manažer ‚ s rozhodnutí bylo dostatečně odůvodněno, a pokud tým ‚ t nesouhlasí, pak je problém s týmem. OP byl najat pro jeho odborné znalosti a nesměl jej využívat ve prospěch podnikání, protože kolegové se ‚ nebudou chovat rozumně není ‚ t přijatelný. Nechte ‚ s obrátit vaše tvrzení na hlavu – proč by ‚ t měli rezistentní členové týmu skončit, pokud jejich pohled na práci není kompatibilní s to podnikání?
- Fair point. Záleží na tom, jak chcete tým řídit. Ale podle mých zkušeností nutí lidi dělat věci proti jejich vůli jen vede k bídě. Raději bych viděl God Objects v celé kódové základně než mizerný vývojový tým. Možná odpověď je poslat je na školicí kurz. Všichni milují výcvikový kurz. Výhra-výhra.
- Vedoucí vývojář / manažer / cokoli by měl absolutně přijmout veškerá přiměřená opatření, aby zajistil, že si tým zachová dobré pracovní vztahy. Pokud je další školení užitečné, pak to ve všech ohledech považujte za alternativu – ale zdá se, že to je jako případ úmyslné nevědomosti a říkat někomu, kdo potřebuje, aby byl vyškolen, aby porozuměl vaší myšlence, když si myslí, že ‚ udělal jsem nesouhlas, spíše než nerozumím, mohl by selhat. Těžko si představuji způsoby jednání s lidmi, kteří se ‚ nechtějí učit.
Odpovědět
Jak mohu dokázat nebo vyvrátit, že „božské“ objekty jsou špatné?
Nelze.
Tento druh domněnky není vhodný pro matematický důkaz a matematický důkaz je jediný druh důkazu, který je zdravý.
I když se pokusíte nahradit emotivní slovo „špatně“ s vyčíslitelnými měřítky účinků používání božských objektů zjistíte, že:
- dostupná opatření jsou hrubá,
- existuje několik důvěryhodných studií, kde byla tato měřítka kvantifikována pro kód vytvořený profesionálními programátory
- existuje jen málo důvěryhodných studií, kde byly jazykové konstrukce nebo designové (anti-) vzory spojeny s těmito opatřeními.
A to ignoruje otázku rozhodování, kdy je určitý objekt „božským“ objektem.
V nejlepším případě by tyto druhy studia mohly prokázat pouze empirickou korelaci. Není to skutečný důkaz.
To, co ve skutečnosti děláte, je debata o výhodách a nevýhodách „božích“ předmětů s cílem změnit jiné národy názory … a pak praxe vaší organizace.
Nepoužívejte slova jako „důkaz“ nebo lidé, s nimiž debatujete, se vám mohou smát do očí.
Odpověď
Možná budete chtít vidět guru týdne # 84 . Je to všechno o božských objektech (monolitech) a o tom, jak jsou špatné.
Extrakt:
(Hlavní) Izoluje potenciálně nezávislá funkce uvnitř třídy […] (menší) Může odrazovat od rozšiřování třídy o nové funkce […]
Odpověď
Nejsem si jistý, jestli váš tým má skutečný zájem o akademické dokázání, že „Boží objekty se mýlí“.
Z psychologického hlediska může být váš refaktoringový přístup nepochopen jako útok na kompetenci týmu a la: „tým odvedl špatnou práci“, i když program funguje podle očekávání.
To, co opravdu chcete udělat, je vyrovnat se s negativními vedlejšími účinky „spagetti code“ a „god objects“: explodig stojí za přidání nových funkcí z důvodu narůstajících chyb způsobených vedlejšími účinky.
Užitečnější může být konkrétní a kladení otázek namísto poskytnutí odpovědí:
manager > Why did implement the new tax-calculation schema took more than 4 weeks team > because {reason a} manager > And why was {reason a}? team > because {reason b} manager > And why was {reason b}? ... team > because {reason z} manager > what could we do to avoid {reason z} ? team > refactor code