N
volkard schrieb:
Da steckt evtl eine Bedeutungsüberladung drin, m_target!=0 heißt zugleich, daß das Schiff im Angriffsmodus ist. Ich schätze, davor hätte ich Angst und würde den Modus woanders scpeichern und genau dann, wenn Modus==ANGRIFF, dann ist m_target definiert. Evtl wäre m_target auch nur ein Attribut eines AngriffsPlan-Objekts und nicht immer optionales Schiffsattribut. Ich tue mir mit optionalen Attributen recht schwer.
Okay. Ich finde optionale Attribute recht nützlich, hatte auch noch nie wirklich Probleme damit. Aber es kann hier natürlich heikel werden, wenn es sich um mehr als einen simplen Setter handelt. Vielleicht würde ich dann auch sowas wie die Angriffsplan-Variante bevorzugen, kommt auf die besonderen Umstände an. Ich hätte aber kein grundsätzliches Problem mit einer einzigen Methode.
Eine ähnliche Sache, bei der eine Entscheidung zwischen einer oder zwei Memberfunktionen fällig ist:
bool Button::SetVisible(bool Visible);
// vs.
void Button::Show();
void Button::Hide();
Obwohl Show() und Hide() sprechender sind und in vielen Situationen direkt so vom User aufgerufen werden können, finde ich SetVisible() flexibler und würde wohl das einsetzen (ich gehe auch hier von einfachen Set-Funktionen aus). Falls sich herausstellt, dass man tatsächlich dauernd am explizit true oder false übergeben ist und das nicht schön findet, kann man ja immer noch zwei globale Funktionstemplates schreiben, die dann auf alle Klassen anwendbar sind, welche eine SetVisible() -Methode bereitstellen.