Beaucoup de gens disent des choses comme "une classe ne devrait jamais être plus grande que ta tête".
Cependant, je viens de participer à une discussion avec de très bons programmeurs de classe mondiale sur ce même sujet. J'en ai parlé avec l'un des gars de Naked Objects. Pour autant que nous le sachions, parfois, cela se produit, et il n'y a pas beaucoup de moyen de le contourner.
Normalement, cependant, la seule classe à laquelle cela se produit est un objet de domaine qui représente l'élément fondamental de votre domaine - un compte bancaire, une vente au détail, etc. Si vous trouvez que cela arrive à d'autres classes aussi, vous avez probablement veulent considérer la responsabilité de cette classe. Voici mes conseils:
- Si cela s'appelle "Manager", "Helper" ou "Service", il y a de fortes chances qu'il soit trop grand. Une fois que vous aurez réellement déterminé quelle devrait être la responsabilité d'une classe, vous trouverez plus facile de déléguer les autres responsabilités.
- S'il s'appelle "Controller", il devrait être responsable du contrôle de l'interaction entre un tas d'autres classes ... et rien d'autre.
- Si elle est le passage de données et de messages entre les différents noeuds physiques alors soit il doit faire face à la conversion d' un message spécifique à une forme sérialisée, ou il gère le mécanisme de transfert. Par exemple, vous pouvez avoir une classe qui convertit une transaction bancaire en XML et une autre classe qui envoie ce XML sur HTTP.
- S'il passe des événements entre différents modules dans une application, il devrait être responsable de dire aux auditeurs quand un événement est déclenché, et rien d'autre.
En règle générale, si c'est trop grand, voyez si vous pouvez déléguer des responsabilités à une autre classe, et si vous ne pouvez pas, c'est probablement OK.