hotti: MVC - getter setter

Beitrag lesen

hi,

Das wäre auch noch ein Grund wieso ich Konstanten gewählt habe und keine Public Variablen.

Mal unabhängig davon: Ich stelle mir, von Perl kommend, gerade die Frage nach dem Sinn von Public-Variables:

In Perl sind alle Attribute einer Klasseninstanz "public", jeder kann darauf zugreifen, macht aber keiner ;)

Genausowenig nutzt in Perl keiner als 'private' gekennzeichnete Methoden, obwohl das grundsätzlich auch möglich ist.

Der Grund ist der: Disziplin und Abstraktion. Der Author einer Klasse könnte diese intern total umbauen, andere Attribute, andere private Methoden. Nach einem Update funktioniert dann der Code nicht mehr, er würde jedoch weiterhin funktionieren, wenn die dokumentierte API (public) genutzt wird.

Public-Vars sind tückisch, wenn sie klassenintern einer Rolle spielen, noch tückischer ist es, solche Variablen über eine Klassenmethode zu setzen, eine diesbezügliche Fehlersuche frisst unnötige Zeit (es müssen aufwendige Backtraces gemacht werden, Logfile-Beobachtung usw.) und im produktiven Umfeld ist sowas tödlich.

Hotti