Abbiamo a che fare con molte operazioni CRUD nella nostra applicazione. Ogni tabella di database ha una o più istanze SQLContainer corrispondenti per eseguire vari tipi di operazioni. Tutti questi SQLContainer sono memorizzati in una classe helper, in modo da poter eseguire qualsiasi tipo di operazione CRUD ovunque dal programma (una volta che si ha il riferimento a quella classe helper).
Ora che la scala dell'applicazione sta crescendo rapidamente, anche questa classe di helper del database è cresciuta immensamente (5+ KLOC). La crescita di questa classe di helper è stata influenzata dal fatto che ogni SQLContainer ha un insieme separato di metodi per eseguire le stesse operazioni, ad es. se dovessi impegnare dipendentiContainer, chiameresti commitEmployeesContainer () e quindi solo la lettura del nome del metodo dà un'idea chiara dell'azione. (Si può chiamare getEmployeesContainer (). Commit (), ma eseguiamo anche alcune operazioni aggiuntive dopo il commit, come il ripristino del codice di stato del commit che è quasi lo stesso per ogni contenitore tranne per pochi contenitori)
Ora stiamo pensando di aggiungere un po 'di polimorfismo a questa classe di helper e creare metodi per scopi generali, ad es. per il commit dei record può essere usato commitContainer (getEmployeesContainer ()), ma tale polimorfismo non avrà alcuna sicurezza di tipo e se alcune tabelle avranno pochi contenitori diversi, potresti passare accidentalmente un contenitore sbagliato.
Uno dei vantaggi è che non dovrai aggiungere nuovi set di metodi quando verranno aggiunti nuovi SQLContainer e anche le modifiche all'algoritmo di commit saranno più facili da adattare.
Domanda:
Quale approccio faciliterebbe la manutenzione mantenendo la leggibilità o esiste una soluzione alternativa per questo tipo di problema?