L'architettura pulita è un approccio alla progettazione del software che separa gli elementi di un programma in livelli distinti di astrazione. È un moderno modello di progettazione del software utilizzato per creare applicazioni software manutenibili ed estensibili.
L'architettura pulita può migliorare la scalabilità, la manutenibilità e l'estensibilità delle applicazioni software. Può anche migliorare la leggibilità del codice, facilitando la comprensione della struttura e dell'organizzazione di un'applicazione da parte degli sviluppatori di software e di altre parti interessate.
L'architettura pulita si basa su un insieme di principi che consentono di progettare le applicazioni software in modo che siano più facili da comprendere, mantenere ed estendere. Questi principi includono la separazione delle preoccupazioni, la responsabilità singola e l'inversione delle dipendenze.
L'architettura pulita è strettamente legata al popolare approccio DDD (Domain-Driven Design) allo sviluppo del software. Il DDD si concentra sulla separazione della logica di business di un'applicazione dalla sua implementazione tecnica, che è una parte importante dell'architettura pulita.
L'architettura pulita presenta anche analogie con la ben nota architettura MVC (Model-View-Controller). Sia nell'MVC che nell'architettura pulita, l'applicazione è divisa in livelli separati che hanno ciascuno uno scopo specifico.
Le interfacce sono una parte importante dell'architettura pulita, poiché aiutano a separare il codice che implementa la logica dell'applicazione dal codice che gestisce le interazioni con l'utente. Questa separazione rende più facile la manutenzione e l'estensione dell'applicazione.
L'architettura pulita facilita la scrittura di test unitari per le applicazioni software. Separando il codice in livelli distinti, è possibile scrivere test per ciascun livello senza dover eseguire l'intera applicazione.
L'architettura pulita è un importante approccio alla progettazione del software che può contribuire a migliorare la manutenibilità, la scalabilità e l'estensibilità delle applicazioni software. Seguendo i suoi principi e incorporando l'uso delle interfacce e del design domain-driven, gli sviluppatori possono creare applicazioni più facili da comprendere e da mantenere.
La Clean Architecture è suddivisa in quattro livelli:
1. Il livello entità contiene gli oggetti di business che rappresentano i dati nel sistema.
2. Il livello dei casi d'uso contiene la logica di business del sistema.
3. Il livello dell'interfaccia contiene il codice che gestisce l'interfaccia utente.
4. Il livello framework contiene il codice che gestisce l'infrastruttura sottostante.
Su Internet si discute molto sulle differenze tra Architettura Pulita e Domain-Driven Design (DDD). A mio avviso, la Clean Architecture si concentra maggiormente sulla separazione delle preoccupazioni tra i diversi livelli di un'applicazione, mentre il DDD si concentra maggiormente sulla modellazione del dominio dell'applicazione. C'è molta sovrapposizione tra i due approcci, ma credo che la differenza principale sia il focus.
No, MVVM non è un'architettura pulita. L'architettura pulita è un principio di progettazione del software che prevede che gli strati più interni di un sistema software siano indipendenti da quelli esterni. Ciò significa che la funzionalità principale del sistema deve essere isolata dall'interfaccia utente, dai database, dai servizi Web e così via. MVVM (Model-View-ViewModel) è un modello di architettura software spesso utilizzato in combinazione con framework UI come WPF, Silverlight e Windows Phone. È stato progettato per aiutare gli sviluppatori a creare codice disaccoppiato e testabile.
I principi dell'architettura pulita sono tre:
1. La separazione delle preoccupazioni.
2. Il principio della singola responsabilità.
3. Il principio Don't Repeat Yourself.
Le tre regole dell'architettura sono: la forma segue la funzione, meno è meglio e l'ornamento è un crimine.