Ho bisogno di aiuto per risolvere un disaccordo, un collega e io ho. Stiamo lavorando a un progetto Angular piuttosto vasto e stiamo cercando di incorporare alcuni principi di Domain Driven Design nel nostro progetto.
Mentre guardavamo questa immagine, abbiamo discusso di come il nostro quadro dell'iniezione delle dipendenze avrebbe contribuito a questo.
Lamiaposizione:iFrameworkdell'iniezionedelledipendenzedevonoessereutilizzatisoloperserviziapplicativi,servizididominio,archiviefabbriche.Alcontrario,glioggettidominisonofondamentalmentenuovi(anchesenontipicamentenuovi,tranneall'internodiunafactory)enonhannoalcunadipendenzadelcostruttore.
Lasuaposizione:èimpossibile,perchéabbiamounDI-Frameworkedovremmousarlo.Lasuapaurasonoenormiclassidimonoliti.Sostienechequandoleclassihannotroppimetodièperfettamentenormaledividerliinclassipiùpiccole(acausadell'SRP)eraggrupparliinunasortadiclassestrumentale.Questosarebbeunlavorodiroutinesenzainiezionedidipendenza.SostienecheiDI-Frameworksononormalidausareinogniprogettopiùgrande,enonusarequantoèpossibileèsciocco.
Perchéècosìdifficilepermeconvincerlo:Lavoriamoconletabellemoltoec'èunaclasse,chepiùomenorappresentail'modello'diunatabella(ignoraperunsecondo,chenellamaggiorpartedeiprogettiuna'tabella'nonfarealmentepartedeldominiodelproblema,eaccettalapremessa,chepotrebbeesserenelnostro).Oraprimaditutto-ancheseinostridatielenostretabellefosserosemplici-unaclassecherappresentaunatabellaavrebbedozzinedimetodi.Tral'aggiuntaelarimozionedirighe,ilridimensionamentodicolonne,ilrecuperoel'impostazionedistaticomelaselezionedirighe,evidenziandolecolonnechecosahai.
Inoltre,anchelecosechesonoconvenzionalmentesemplici,comeaggiungereunariga,hannospesso5effetticollateralidiversisualtrepartidellatabella(questisonoirequisitieffettivi).Quindipensochetuttivoisiated'accordo,cheavereunaclassedatavolodi4000righesiainaccettabile.Diconseguenza,dobbiamospostarealcunedellesuefunzionalitàinclassipiùpiccole,chefannosolounacosa,oanchesolounapartediunacosa.Eorasiamoinunvicolocieco.Pensochequestodebbaancoraessereunalezionesenzaun'iniezionedidipendenza,manonsocomefarloedèirremovibile,chestosoloimmaginandoquestocomeunproblemaevogliofocalizzareiservizinellaclasse,chefannoilavori,chedovrebbeconvenzionalmentefarlodasé.
Quindisonopazzo?Èpazzo?Inoltre,senonseid'accordoconlui,ottienipuntibonusperilcollegamentodifontiaffidabili,perché"chiunque può scrivere qualsiasi cosa su StackOverflow"