J'ai une couche d'accès aux données qui extrait le reste de l'application de la technologie de persistance. À l'heure actuelle, l'implémentation est un serveur SQL, mais cela pourrait changer. Quoi qu'il en soit, je trouve que cette classe d'accès aux données principales devient plus grande et plus grande à mesure que mes tables grandissent (environ 40 tables maintenant). L'interface de cette couche d'accès aux données est une question que vous pouvez obtenir des données surest-il nécessaire de refactoriser une grande couche d'accès aux données
public interface IOrderRepository
{
Customer[] GetCustomerForOrder(int orderID);
Order[] GetCustomerOrders(int customerID);
Product[] GetProductList(int orderID);
Order[] GetallCustomersOrders(int customerID);
etc . . .
}
la mise en œuvre derrière c'est SQL de base stockées procs pour exécuter les requêtes appropriées et le retour des résultats dans les collections typées
cette volonté continuer à grandir et à grandir. C'est assez facile à maintenir car il n'y a pas vraiment de rupture de responsabilité mais la classe compte maintenant plus de 2000 lignes de code. Donc, la question est, en raison de la taille de classe sûre (et pas de véritable couplage conceptuel), si cela se décomposer et si oui sur quelle dimension ou niveau d'abstraction.
S'il vous plaît ne pas « essayer [..] de modifier plutôt t han ajouter de nouvelles tables ». Beaucoup de tables ne sont pas un problème. Si vous en avez besoin, créez-en un. –
Je ne suggère pas de jeter le sens commun - considérons les deux points suivants: Premièrement, une croisade de normalisation peut être mauvaise, à la fois pour la clarté et la performance d'un modèle de données. Deuxièmement, j'ai vu de nombreux programmeurs créer de nouvelles tables pour les types qui peuvent être élégamment unifiés dans une structure de données unique (table). –