Faccio app line of business in cui tutti gli altri sviluppatori sono abituati a fare app CRUD di base o sono focalizzati esclusivamente sulla creazione di interfacce graziose / funzionali e sto ottenendo molto.
"Con il modo in cui usiamo per farlo, il Dipendente avrebbe tutte le cose che potresti fare con un dipendente." Ed era vero. Quella "Classe" aveva migliaia di righe di codice e tutto ciò che si poteva fare con un dipendente era lì. O, peggio ancora, c'era una tabella di dati sui dipendenti e ogni sviluppatore ha capito come fare ciò che voleva fare nel gestore dell'evento.
Tutte le cose cattive di quell'approccio erano vere ma almeno lo sviluppatore che utilizza il dipendente potrebbe, senza andare ad altri documenti, capire come iscrivere il dipendente in un piano sanitario, dare un aumento di stipendio, licenziare, assumere, trasferire ecc. Lo stesso vale per Manager e tutte le altre idee principali. Oppure, se utilizzavano il dipendente con altre tabelle di dati necessarie, potevano semplicemente fare ciò che volevano.
Sì, c'era molto codice duplicato. Sì, era un codice molto fragile. Sì, test è stato molto più difficile del necessario. Sì, cambiare funzionalità è stata la paura di indurre e Copy Paste è stato naturale grazie all'approccio.
Ma potevano almeno scoprire cosa era disponibile creando una classe o potevano fare quello che dovevano fare senza dover capire la differenza tra interfacce, classi astratte, classi concrete ecc. E non dovevano cercare altro i metodi restituiti da intellisense o conoscere le tabelle in cui risiedevano i dati.
Ho cercato su Google / abbuffato e persino yahoo! D ma non ho trovato alcun riconoscimento di questo problema.
Quindi forse non c'è un problema e mi sto perdendo qualcosa. Ho distrutto il mio cervello cercando di trovare una soluzione in cui gli sviluppatori che non funzionano con il comportamento / il progetto reale possono facilmente scoprire come fare qualcosa senza dover fare riferimento a documenti esterni o scansionare i nomi delle classi nei vari componenti / progetti per trovare quello che sembra funzionare.
L'unica cosa che sono stato in grado di inventare è avere queste, per mancanza di un nome migliore, "Table of Content Class" che non fa altro che restituire le classi effettive (e in realtà la maggior parte di loro sono interfacce ma non lo fanno conoscere la differenza o anche la cura) che altri sviluppatori possono utilizzare per eseguire le attività effettive desiderate. Finiscono ancora con classi davvero grandi ma non c'è quasi nessun comportamento in esse.
Esiste un modo migliore che non richiede una conoscenza intima del livello intermedio in cui avviene l'implementazione effettiva di SOLID?
Fondamentalmente quello che sto chiedendo c'è un modo per consentire agli sviluppatori di tipo CRUD di continuare a essere sviluppatori CRUD in un sistema molto complesso