Wann Kapselung?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
paitn
User
Beiträge: 15
Registriert: Montag 4. Juni 2018, 09:32

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
Sirius3
User
Beiträge: 17797
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13200
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.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Benutzeravatar
paitn
User
Beiträge: 15
Registriert: Montag 4. Juni 2018, 09:32

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?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein, sondern Klassen oder namedtuple oder aenhliches.
Benutzeravatar
paitn
User
Beiträge: 15
Registriert: Montag 4. Juni 2018, 09:32

Vielen Dank!

Habt ihr mir noch einen Buchtipp, welche Regeln man in Python befolgen sollte - sprich "gutes Programmieren".
Benutzeravatar
__blackjack__
User
Beiträge: 13200
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.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Antworten