2010-08-12 3 views
2

Voici une autre question liée à une question que j'ai posée il y a quelques minutes. Si j'ai une classe qui, je crois, n'a qu'une responsabilité mais beaucoup de règles métier et que cette classe est grande, environ 4000 lignes ou plus, est-ce correct de ne pas factoriser la classe en plusieurs classes.Règles du refactor de grande classe

+1

4000 lignes semble WAY plus d'une responsabilité. Décrivez ce qu'il fait en une phrase. –

+0

Cette classe convertit les données produit en fonction des paramètres utilisateur. – user204588

+0

Il y a beaucoup de nombreux paramètres pour l'utilisateur à choisir et je dois les comptabiliser tous. – user204588

Répondre

1

Une classe de 4 000 lignes n'est pas très facile à maintenir. Il pourrait être difficile de tester des parties de la logique isolément. Une raison plus pratique pour la scinder est que plusieurs programmeurs peuvent travailler en parallèle si elle est séparée en plusieurs classes. C'est beaucoup plus difficile à faire si c'est une classe.

Vous perdez beaucoup de bons attributs de qualité logicielle en laissant cela comme un monstre monolithique. Il y a de meilleurs modèles pour réduire sa complexité interne, même si tout est vraiment cohérent.

0

Je dirais "non". 4 000 lignes est beaucoup trop grande.

Je voudrais examiner les règles de gestion pour voir si elles n'impliquent pas que la classe est vraiment composite. En particulier, s'il est possible de partitionner l'ensemble de règles métier en sous-ensembles sensibles, il est probable que chaque sous-ensemble indique que votre classe doit être divisée en composants, chacun avec son propre ensemble de règles métier, et que les règles doivent être morcelé parmi les composants.

Je considérerais également la refactorisation des règles métier dans une représentation plus compacte.

+0

Le plus gros problème que j'ai avec la rupture est que toutes mes méthodes utilisent les mêmes variables. Ne devraient-ils pas rester dans la même classe alors? – user204588

+0

Vous voulez vous battre pour ceci: http://en.wikipedia.org/wiki/Law_of_Demeter – Mike

+0

@user: ils utilisent _all_ les mêmes variables? Vous avez des problèmes. Combien de ces variables se réfèrent à d'autres objets? La nécessité de se référer au même ensemble d'objets externes n'indique pas que ces méthodes appartiennent ensemble. –

2

4000 lignes c'est trop. Soit vous avez 500 méthodes ou vous avez des méthodes vraiment longues. Je ne peux pas voir un moyen qui peut être gérable. Cela semble évident mais je vous suggère de commencer par regrouper des méthodes/variables similaires. par exemple. toutes les données de coût vont dans la classe productCost etc. à la place. Utilisez des méthodes de requête au lieu des champs calculés qui sont utilisés par de nombreuses méthodes.