title image


Smiley Re: wofür nutzt man 'private' und 'public'?
> von c++ kenn ich private noch dafür, dass man funktionen schreibt, die nur in einer

> klasse verfügbar sind. ich nehme an, das das in php ähnlich ist, aber wofür soll das

> gut sein?



Sicherheit, Datenkapselung, elegantes Design, schlanke Klassen, Grundlagen von objektorientierter Programmierung...



> bringt mir das irgendwelche vorteile, wenn ich funktionen als privat deklariere?



Und ob! Erstens ist es immens wichtig, auch syntaktisch zwischen öffentlichen und privaten Membern einer Klasse zu unterscheiden, um sich nicht extra merken zu müssen, was nun was ist, denn das wäre extrem fehleranfällig.



Zweitens kannst du in privaten Methoden oft auf gewisse Sicherheitsabfragen (z.B.: "Liegt die Zahl im erlaubten Bereich zwischen 0 und X?") verzichten, die dagegen unerläßlich sind, wenn du öffentliche Methoden schreibst und dabei an stabiler Software interessiert bist.



Drittens entstehen dadurch oft sehr elegante Klassenmodelle. Stell dir vor, du hast in einer Klasse drei public-Methoden, die alle dieselbe Wertüberprüfung vornehmen müssen. Dann kannst du diese Prüfung einfach an die private Methode delegieren, anstatt mit Copy & Paste herumzupfuschen. Von außen soll die Methode aber niemand sehen, um das Klasseninterface nicht fett zu machen. Fette Klasseninterfaces sind schlecht, weil sie dem Benutzer der Klasse Entscheidungen aufzwingen und ihn zu Fehlern animieren.



Viertens mußt du auch unbedingt zwischen private und protected unterscheiden! Ohne protected-Methoden könnte man sehr viele wunderbare Design Patterns vergessen oder zumindest nicht mehr mit der nötigen Klarheit und Stabilität umsetzen, z.B. Template Method.



> ausversehn aufrufen kann man sie doch eigentlich nicht



Doch, kann man. Stell dir vor, du arbeitest zwei Wochen nicht am Code und machst dann erst weiter. Dann weißt du nicht mehr auswendig, welche Methoden von außen aufrufbar sein sollen und welche nicht. Auch ein anderer Entwickler, der deinen Code weiterbearbeiten soll, sieht das nicht so einfach; dem kommen die Tränen (aber nicht die der Freude), wenn er solche Klassen vorgesetzt bekommt.



Denk dran, wie groß ausgewachsene Programme werden können.



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: