Zusammengehörige Variablen Kapseln
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Vorschlag für ein CodeRefactoring, potentiell als Beitrag für http://www.refactoring.com/catalog/index.html
mehrere Felder oder lokale Variablen bilden eine logische Einheit
bilden Sie eine Klasse mit entsprechenden Feldern
| int xPos;
int yPos;
int zPos; |
|
|
|
V
| ThreeDimensionalPosition position; |
|
|
Motivation
Die Zusammengehörigkeit der Variablen wir durch eine eigene Klasse besser ausgedrückt als durch die Namensgebung der Variablen. Höchstwahrscheinlich bietet sich im Anschluss die Möglichkeit, Funktionalität, die spezifisch auf diesen Variablen operiert, in die Klasse zu verschieben.
Vorgehen (Entwurf)
- Erstellen Sie eine neue leere Klasse, die die Variablen repräsentieren wird. Erstellen Sie an geeigneter Stelle (Vorschläge?) eine Instanz dieser Klasse.
- Werden die Variablen als Parameter in Methoden benutzt, wenden Sie an den entsprechenden Stellen ParameterErgänzen? an. (Unter Umständen kann dies auch sinnvoll sein bei Methoden, die nur einen Teil der Variablen als Parameter benutzen.)
- Wandeln Sie um.
- Verschieben Sie eine der Variablen in das neue Objekt. Lassen Sie alle Benutzer der Variable das Objekt benutzen und entfernen Sie die damit unnütz gewordene alte Variable. Wandeln Sie um und testen Sie.
- Entfernen Sie redundante Parameter in Methoden, die das neue Objekt als Parameter benutzen. Wandeln Sie um und testen Sie.
- Verfahren Sie mit allen weiteren geeigneten Variablen wie in den vorherigen zwei Punkten.
- Halten Sie Ausschau nach Möglichkeiten, Verhalten in die neue Klasse zu verschieben. Wenden Sie gegebenenfalls MethodeExtrahieren? und MethodeVerschieben? an.
Beispiel (ToDo)
Hier sollte ein Beispiel zum Vorgehen stehen, analog zu den Beschreibungen im RefactoringBuch oder http://www.refactoring.com/catalog/moveClass.html#Example.
Anmerkungen
Verwandte CodeRefactorings sind ParameterobjektEinführen und KlasseExtrahieren?.
Was dagegen sprechen könnte
In Java trägt jedes Objekt und jedes Array ein kleines Speicherverwaltungsoverhead. Zwei Arrays mit 100 int tragen also 2 solche Overheads, ein Array mit 100 Objekten dagagen 101.
KategorieRefactoring
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 8. Oktober 2002 19:03 (diff))