Hallo,
ich habe eine Grundverständnis-Frage.
Strebt man das Kapseln von Variablen immer an oder wann kapsele ich? Wo ist hier die "Linie"?
Man hat meist unheimlich viele Variablen. Man kann ja nicht für jede einzelne Variable getter und setter Methoden erstellen.
Grüße,
Michael
Wann Kapselung?
getter und setter-Methoden schreibt man in Python überhaupt nicht, weil es property gibt.
Wenn man unheimlich viele Variablen hat, dann ist das Klassendesign nicht gut. Das deutet darauf hin, dass eine Klasse eigentlich aus komplexeren Teilen besteht und diese herauszuziehen sind.
Kapseln bedeutet ja, dass nicht alle Variablen auf einer Ebene verfügbar sind, sondern in Klassen zusammengefasst sind.
Damit ist die Frage beantwortet: man strebt das Kapseln von Variablen immer an, weil niemand alle Variablen im globalen Scope haben möchte (in Wirklichkeit keine). Und wie viel ich zu einer Einheit zusammenfasse ergibt sich daraus, was sinnvoll zusammengehört. Das läßt sich nicht pauschal beantworten, aber mehr als eine Handvoll Variablen in einem Scope ist nicht mehr wartbar.
Wenn man unheimlich viele Variablen hat, dann ist das Klassendesign nicht gut. Das deutet darauf hin, dass eine Klasse eigentlich aus komplexeren Teilen besteht und diese herauszuziehen sind.
Kapseln bedeutet ja, dass nicht alle Variablen auf einer Ebene verfügbar sind, sondern in Klassen zusammengefasst sind.
Damit ist die Frage beantwortet: man strebt das Kapseln von Variablen immer an, weil niemand alle Variablen im globalen Scope haben möchte (in Wirklichkeit keine). Und wie viel ich zu einer Einheit zusammenfasse ergibt sich daraus, was sinnvoll zusammengehört. Das läßt sich nicht pauschal beantworten, aber mehr als eine Handvoll Variablen in einem Scope ist nicht mehr wartbar.
- __blackjack__
- User
- Beiträge: 13919
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@paitn: Wenn man für jede einzelne Variable Getter und Setter schreibt, ist ja auch rein gar nichts gekapselt, denn dann sind ja alle nach aussen verfügbar.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Sorry, hatte ich laienhaft geschrieben. Ich meine tatsächlich properties.
Was meinst du mit "zu einer Einheit zusammenfassen"? List-Variablen statt einzelnen Variablen?
- __blackjack__
- User
- Beiträge: 13919
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@paitn: Kein Buch aber: Style Guide for Python Code.
Allgemein als sprachunabhängiges Buch finde ich „Weniger schlecht Programmieren“ von Kathrin Passig ganz gut. Wenn's auch Englisch sein darf geht „Code Craft“ von Pete Goodliffe in eine ähnliche Richtung. Der hat später auch noch ein wohl ähnliches Buch bei O'Reilly veröffentlicht, das ich aber noch nicht gelesen habe.
Allgemein als sprachunabhängiges Buch finde ich „Weniger schlecht Programmieren“ von Kathrin Passig ganz gut. Wenn's auch Englisch sein darf geht „Code Craft“ von Pete Goodliffe in eine ähnliche Richtung. Der hat später auch noch ein wohl ähnliches Buch bei O'Reilly veröffentlicht, das ich aber noch nicht gelesen habe.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware