Seite 1 von 1

Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 08:34
von paitn
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

Re: Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 08:50
von Sirius3
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.

Re: Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 10:01
von __blackjack__
@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.

Re: Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 11:13
von paitn
Sorry, hatte ich laienhaft geschrieben. Ich meine tatsächlich properties.
Sirius3 hat geschrieben: Freitag 5. Januar 2024, 08:50 ...
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.
Was meinst du mit "zu einer Einheit zusammenfassen"? List-Variablen statt einzelnen Variablen?

Re: Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 11:17
von __deets__
Nein, sondern Klassen oder namedtuple oder aenhliches.

Re: Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 15:53
von paitn
Vielen Dank!

Habt ihr mir noch einen Buchtipp, welche Regeln man in Python befolgen sollte - sprich "gutes Programmieren".

Re: Wann Kapselung?

Verfasst: Freitag 5. Januar 2024, 16:35
von __blackjack__
@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.