Gli sviluppatori di Android probabilmente hanno familiarità con Ceja's Clean Architecture , dove usare i casi sono classi che implementano il Pattern di comando .
Shvets definisce gli intenti pattern come segue:
- Incapsula una richiesta come oggetto, consentendo in tal modo di parametrizzare i client con richieste diverse, accodare o registrare richieste e supportare operazioni annullabili.
- Promuovi "invocazione di un metodo su un oggetto" allo stato dell'oggetto completo
- Una callback orientata agli oggetti
Uso questo approccio per migliorare la leggibilità e la testabilità del codice. Ma, dopo aver letto il anti-Patterns di Shvets, mi sono confuso con il suo Funzionale decomposizione anti-pattern definizione:
- Le classi con nomi di "funzione" come Calculate_Interest o Display_Table possono indicare l'esistenza di questo AntiPattern.
- tutti gli attributi di classe sono privati e utilizzati solo all'interno della classe.
- Classi con una singola azione come una funzione.
- Un'architettura incredibilmente degenerata che manca completamente il punto dell'architettura orientata agli oggetti.
- Assolutamente no sfruttamento di principi orientati agli oggetti come l'ereditarietà e il polimorfismo. Questo può essere estremamente costoso da mantenere (se mai ha funzionato in primo luogo, ma non sottovalutare mai l'ingenuità di un vecchio programmatore che sta lentamente perdendo la corsa alla tecnologia).
- Non c'è modo di documentare chiaramente (o persino spiegare) come funziona il sistema. I modelli di classe non hanno assolutamente senso.
- Nessuna speranza di ottenere mai il riutilizzo del software.
- Frustrazione e disperazione da parte dei tester.
Come posso capire se sto usando Anti-pattern di decomposizione funzionale invece di Command pattern ?