I really liked the concepts in the video The Principles of Clean Architecture by Uncle Bob Martin. But I feel like this pattern is like a combination of Abstract Factory and Builder patterns at its core.
Non chiudere nemmeno.
Quando guardi questo:
Staiguardandoildesigndiungraficooggetto.Questodeterminacosasadicosa.Ciòchemancainquestastoriaècomeèstatocostruitoilgraficodell'oggetto.Scusamanonlotroveraiqui.Nonc'èalcunamenzionedicostruzione.
Puoicostruiretuttoquestosenzafabbricheecostruttoriastratti.Losoperché l'ho fatto . Non ho nemmeno deciso di evitarli. Li amo. Non mi è capitato di averne bisogno. Ho appena usato il reference passing. Iniezione di dipendenza è il termine di fantasia per questo.
In effetti, potrei costruire tutto ciò che vedi in quel diagramma in main. Quindi basta chiamare un metodo su un oggetto per iniziare il tutto ticchettando.
Ora le cose devono esistere prima di poterle inserire in altre cose. Ho esplorato questo qui e gli ho dato questo grazioso diagramma:
Epuoicrearetuttociòsenzanemmenolasciaremain()
.
Vorreiraccomandarel'usodicostruttoriefabbrichequandosivuolerompereunapiladicodicedicostruzioneproceduraleinbeipezziconcettualididimensionidelmorso.Manonc'ènullanell'architetturapulitaoinnessunadellealtrearchitetturedibuzzwordcherichiedechetufaccia.Quindisevuoirestareconmain()
,bene.Perfavore, abbi pietà .
Is “Clean Architecture” by Bob Martin a rule of thumb for all architectures or is it just one of the options?
Considero l'architettura pulita una parola d'ordine usata per guidare le persone verso un blog e un libro. Quel blog e il libro hanno ottime spiegazioni di architetture più antiche molto simili con nomi più vecchi usati per guidare le persone verso blog più vecchi e libri più vecchi. In particolare cipolla e porte e adattatori. Nessuno dei quali è l'unica opzione architettonica che possiedi.
Mi piace lo zio Bob perché è un oratore e un autore fantastici. Mi fa pensare a cose che altrimenti non avrei. Ma se lasci che ti trasformi in uno zelota religioso che insiste che tutto debba essere fatto a modo suo, scoprirai rapidamente che la documentazione di aggiornamento è la più vicina che ti permetterò di ottenere il mio codice.
Le architetture della buzzword sono utili quando hai un codice di lunga durata che deve persistere mentre il mondo cambia intorno ad esso. Questo è quando brilla. Se il mondo è stabile rispetto al codice, allora stai facendo le cose di fantasia senza una buona ragione.
Indipendentemente da quanto qualcosa di fantastico appaia, c'è un contesto in cui puoi metterlo dentro che lo renderà assurdo. Spiacente, questo non è un proiettile d'argento.
But in the video I feel he suggests that clean architecture should have a clear boundary between business logic and frameworks. Frameworks (web, android, etc.) should be plugins that plug in to to the business logic. He even subtly mocks rails in the video.
Hai ragione. Lui fa. Lo zio Bob ritiene che le strutture possano essere trattate come librerie. E loro possono Ma anche quella decisione ti costa qualcosa.
Ciò che il signor Martin sta cercando di preservare è uno spazio in cui il linguaggio generale è ancora generale. Lo lasci quando diffondi un quadro ovunque. Quando lo fai, ti stai dirigendo verso il morphing del tuo linguaggio in qualcosa chiamato un linguaggio specifico del dominio. HTML è un linguaggio specifico del dominio. Fa il suo lavoro molto bene, ma ci sono altri lavori che non può fare affatto.
Finché i tuoi bisogni saranno anticipati dal framework, le cose andranno molto bene. È bello avere i tuoi bisogni anticipati. Ti mette in una scatola che mantiene le cose semplici. Basta capire cosa stai dando per ottenere questo. Se diffondi Spring ovunque, non puoi più pubblicizzarlo come un lavoro Java. È un lavoro Java / Spring. Potrei dire la stessa cosa di Ruby e Rails ma Rails ha mangiato il pranzo di Ruby molto tempo fa.