Merci pour le code.
Voici quelques choses que vous pourriez essayer:
1) Refactor le code en double. Ce type de code a été reproduit sept fois:
Visio.Cell pinX = GetLayoutCell(Visio.VisCellIndices.visXFormPinX);
if (pinX != null)
{
pinX.set_Result("cm", value);
}
Note: Piny calcule également pinx mais ne l'utilise pas sa valeur.
double emploi similaire existe dans: Pos {X, Y} {Début, Fin}
Ce qui rend cette classe plus difficile à briser est que c'est un wrapper autour d'une classe déjà complexe.
Ne connaissant pas très bien le domaine (bien que je sois un expert avec le concept Shape, Circle, Square), je serais tenté de diviser la classe en plusieurs classes qui partagent chacune le même objet Shape.
Voici un croquis:
class EnvironShape {
private ShapeProperties _properties; // contains property management code
private ShapeCollection _children; // contains code for acting on children
private Decorators _decorators; // code for accessing decorators
private Layers _layers; // layer management code
private Position _position; // code for working with the shape's position
// Other code omitted
}
je pas immédiatement et directement exposer ces objets (par exemple ShapeCollection publics GetChildren()) mais je commencer faire le délégué EnvironShape à ces objets.
Le code ... Où est-ce? :) –