Mögliche Duplizieren nicht tun:
Convention question: When do you use a Getter/Setter function rather than using a PropertyWas Getter und Setter sollte und
Ich habe in letzter Zeit mit unterschiedlichen Meinungen zu Getter und Setter in eine Menge laufen, so dachte ich, Ich sollte es in seine eigene Frage bringen.
Eine previous question von mir erhielt einen sofortigen Kommentar (später gelöscht), dass Setzer sollten keine Nebenwirkungen haben, und eine SetProperty
Methode wäre eine bessere Wahl.
Tatsächlich scheint dies auch Microsoft's opinion zu sein. Ihre Eigenschaften führen jedoch häufig zu Ereignissen wie Resized
, wenn die Eigenschaft Width
oder Height
eines Formulars festgelegt ist. OwenP besagt auch "Sie sollten nicht zulassen, dass eine Eigenschaft Ausnahmen auslöst, Eigenschaften sollten keine Nebenwirkungen haben, Reihenfolge sollte nicht wichtig sein, und Eigenschaften sollten relativ schnell zurückkehren."
Noch Michael Stum besagt, dass beim Validieren von Daten in einem Setter Ausnahmen ausgelöst werden sollten. Wenn Ihr Setter keine Ausnahme auslöst, wie können Sie effektiv Daten validieren, wie so viele der Antworten auf this question vorschlagen?
Was ist, wenn Sie ein Ereignis auslösen müssen, wie fast alle von Microsoft's Control tun? Sind Sie dann nicht der Gnade von wem auch immer Ihre Veranstaltung abonniert? Wenn ihr Handler eine große Menge an Informationen ausführt oder selbst einen Fehler auslöst, was passiert dann mit Ihrem Setter?
Schließlich, was ist mit lazy loading im Getter? Auch dies könnte gegen die vorherigen Richtlinien verstoßen.
Was ist akzeptabel, um in einem Getter oder Setter zu platzieren, und was sollte nur in Accessor-Methoden aufbewahrt werden?
Edit:
Von einer anderen article in der MSDN:
Die
get
undset
Methoden sind in der Regel nicht von anderen Methoden. Sie können jede Programmlogik ausführen, Ausnahmen auslösen, überschrieben werden und mit beliebigen von der Programmiersprache erlaubten Modifikatoren deklariert werden. Beachten Sie jedoch, dass Eigenschaften auch statisch sein können. Wenn eine Eigenschaft statisch ist, gibt es Einschränkungen, was die Methodenget
undset
können. Weitere Informationen finden Sie in Ihrer Programmiersprache.
Ich las diese Frage, die Antworten und sogar damit in meiner eigenen Frage verknüpft. Ich habe nichts über Veranstaltungen gesehen, was meiner Meinung nach andere Antworten verdient. – dlras2
@Rowland: Ich denke, es ist spezifisch genug, um anders zu sein. –
Wer hat dafür gestimmt, dass er zum Super User migriert wird? – ChrisF