Quindi può sembrare un po 'ampio e generalizzato, ma dopo aver passato un po' di tempo a lavorare con gli sviluppatori, ho notato molti metodi e schemi di design diversi. Tuttavia, una cosa importante che mi viene in mente è come la complessità di alcune di queste classi relativamente semplici (per quanto riguarda la logica) possa essere ingombrante.
Ad esempio, di recente ho creato un servizio che sincronizza i dati tra SalesForce e Zendesk. Ora ci sono molte regole aziendali che devono essere prese in considerazione, ma ho creato l'applicazione attorno al pattern di codice MVVM.
Ma una volta approfondito un po ', noterai molta complessità e inizierai a scavare attraverso molte classi per capire cosa sta succedendo.
Ad esempio, ecco un diagramma di classe del mio strumento di sincronizzazione.
Anche uno sguardo casuale sarà in grado di mostrare un po 'della complessità, e diventa ancora più difficile quando si scava nel codice reale dietro i singoli metodi.
Non solo stai effettuando l'interfaccia tra due API separate, ma stai anche interagendo con più protocolli (SOAP e REST). Entrambi questi servizi sono soggetti a singhiozzo e malfunzionamenti, pertanto è necessario ricorrere automaticamente al tentativo di riprovare in caso di errore. Quindi è necessario mappare tutti i campi correttamente avanti e indietro. Da lì devi assicurarti che nient'altro riesca a fallire. Ogni singolo campo è una possibilità di fallimento, e ogni funzionalità aggiunta crea in modo esponenzialmente complesso.
Come puoi mitigare parte di questa complessità?