J'ai remarqué que même en respectant le principe de responsabilité unique de l'OOD, parfois les classes grandissent encore. Parfois, l'accès direct aux variables membres dans les méthodes semble avoir un état global, et beaucoup de choses existent dans la portée actuelle. Juste en regardant la méthode qui fonctionne actuellement, il n'est plus possible de déterminer d'où viennent les variables inviduelles accessibles dans la portée actuelle. Lorsque je travaillais avec un ami ces derniers temps, je me suis rendu compte que j'écrivais beaucoup plus de code verbeux que lui, parce que je transmets toujours des variables membres en tant que paramètres dans chaque méthode.Accéder directement aux variables membres ou passer en paramètre?
Est-ce une mauvaise pratique?
edit: exemple:
class AddNumbers {
public:
int a, b;
// ...
int addNumbers {
// I could have called this without arguments like this:
// return internalAlgorithmAddNumbers();
// because the data needed to compute the result is in members.
return internalAlgorithmAddNumbers(a,b);
}
private:
int internalAlgorithmAddNumbers(int sum1, int sum2) { return sum1+sum2; }
};
Si vos classes sont trop grandes, séparez-les. Si vous avez une variable membre, utilisez-la. Si vous n'utilisez pas de variables membres dans une méthode, il devrait probablement être 'static', mais faire beaucoup de choses semble étrange. – Flexo
Excusez-moi, je semble avoir un léger problème avec votre anglais. Vous transmettez des variables membres en tant que paramètres? Variables membres publiques? Ou de nouvelles valeurs pour ces variables membres? Je suis un peu confus. – ATaylor
Désolé que je n'étais pas clair sur ce point. Lors de l'implémentation d'un algorithme, je réitère généralement les paramètres qu'il prend dans la signature de la méthode, bien que les données dont l'algorithme a besoin puissent être extraites directement des variables membres. Supposons que vous avez une classe, qui ajoute deux nombres, et a les 2 nombres a et b comme variables membres. Alors au lieu d'avoir une méthode add privée avec des paramètres zéro, je définirais toujours une fonction en prenant 2 arguments int. Comme ça, je pourrais réutiliser l'algorithme plus tard en dehors d'une classe. – Tom