Je suis intéressé à explorer l'idée que la relation entre les méthodes et les membres varialbes qu'ils utilisent peut donner un indice sur la façon dont la classe pourrait être divisée en plus petits morceaux. L'idée est qu'un groupe de variables sera étroitement lié à une responsabilité et devrait être contenu dans une classe selon la SRP.Est-ce que vous regardez les variables utilisées par une méthode avant de refactoriser une grande classe en plus petites?
Pour un exemple trivial, une classe telle que:
public class Rectangle {
private int width;
private int height;
private int red,green,blue;
public int area() { return width * height; }
//just an example, didn't check the api.
public Color color() { return new Color (red, green, blue); }
}
Devrait être remaniée:
public class Rectangle {
private Dimension size;
private Color color;
...
}
Parce que le bas de rupture serait:
Zone: largeur, hauteur Couleur: rouge, vert, bleu
Puisque ces variables sont nous ed dans la même méthode, ils sont clairement liés et pourraient être transformés en une classe à part. Je sais que cet exemple pourrait être trop trivial mais supporter avec moi et essayer et penser plus grand ici. Si d'autres méthodes utilisent également ces variables, elles sont très probablement également liées et peuvent également être déplacées dans la nouvelle classe.
Juste pour le plaisir que j'ai créé un peu plugin for Eclipse qui essaye de faire ceci. Il aura une décomposition sur méthodes-> variables, variables-> et essayera aussi de regrouper les méthodes après quelles variables elles utilisent directement ou indirectement.
Est-ce quelque chose que vous faites lors du codage, et est-ce vraiment utile?
Alors, quelle est la question ici? – Lucero
Vous voulez dire en fait des variables membres, pas des instances, n'est-ce pas? – kgiannakakis
@Lucero - Il y a quelques questions. Ils peuvent être identifiés en étant suivis d'un point d'interrogation (?). – willcodejavaforfood