Danke für den Code.
Hier sind ein paar Dinge, die Sie könnten versuchen:
1) Umgestalten doppelten Code. Diese Art von Code wurde etwa sieben Mal dupliziert:
Visio.Cell pinX = GetLayoutCell(Visio.VisCellIndices.visXFormPinX);
if (pinX != null)
{
pinX.set_Result("cm", value);
}
Hinweis: piny berechnet auch Pinx aber seinen Wert nicht verwenden.
ähnliche Überschneidungen gibt es in: Po {X, Y} {Start, Ende}
Was diese Klasse schwieriger macht zu brechen ist, dass es ein Wrapper um eine bereits komplexe Klasse.
Da ich die Domain nicht sehr gut kenne (obwohl ich ein Experte für das Shape-, Circle-, Square-Konzept bin), wäre ich versucht, die Klasse in mehrere Klassen zu teilen, die jeweils das gleiche Shape-Objekt teilen.Hier
ist eine Skizze:
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
}
würde ich nicht sofort und direkt auf diese Objekte aussetzen (zum Beispiel öffentliche Shapecollection GetChildren()), aber ich würde machen die EnvironShape Delegierten auf diese Objekte beginnen.
Der Code ... Wo ist es? :) –