deepthroat
Erfahrenes Mitglied
Hi.
Hast du denn eigentlich mal ausprobiert was passiert wenn du aus einem Attribut eine read-only Property machst so wie in Beitrag #6? Du änderst hier das ABI - d.h. das Modul ist nicht mehr kompatibel zur alten Version und jedes abhängige Modul bzw. Programm muss neu kompiliert werden. Nur weil es syntaktisch gleich aussieht, ist es dennoch ein ganz anderes paar Schuhe.
Gruß
Welche Software hat 100% Unit-Test Abdeckung? ;-]Da hast du natürlich recht. Sicherlich könnte man jetzt gegenargumentieren und sagen, dass mögliche Fehler mit dem Unit-Testing aufgedeckt werden.
Um (wie Vereth auch schon sagte) Inkonsistenzen im System zu unterbinden. Warum sollte ich es riskieren das ein Programmteil (auf den ich keinen Einfluss habe) den Wert eines Attributes ändert (_ro Suffix hin oder her)?Das ist wieder so eine Sache... Wozu brauche ich in einem Programm read-only Attribute / Variablen? Wenn ich eh nicht darauf schreibend zugreife, dann brauche ich die Variable auch nicht read-only zu deklarieren. Ich bin ja der jenige, der beschlossen hat, dass ich nur lesend auf die Variable zugreife. Zur Not benenne ich die Variable mit "_ro" als Postfix, rein zur Erinnerung.
Es geht nicht darum etwas zu dürfen. Wie gesagt kann man wohl kaum verhindern das jemand irgendetwas im Quellcode herumpfuscht. Aber nicht öffentliche Attribute / Methoden brauchen einen anderen Programmierer nicht zu interessieren. Man bietet eine öffentliche Schnittstelle und fertig. Die öffentliche Schnittstelle sollte man nie ändern, da andere Programmteile natürlich davon abhängen (könnten). Wenn ich sauber gearbeitet habe kann ich den Typ der privaten Attribute jederzeit ändern. D.h. ich bin frei in der Entscheidung etwas an der internen Implementierung zu ändern ohne das 3 andere Entwickler mir auf's Dach steigen weil ihre Module nicht mehr kompilieren oder laufen.Das ist natürlich der "klassische" Grund, der auch mir eingetrichtert wurde. Was meinst du denn genau mit öffentlich? Ich glaube, wir sind uns darüber einig, dass ein Anwender (also die Öffentlichkeit) absolut nichts sieht, was im Quelltext geschrieben steht. Er kann auch nicht einfach mal eben private Methoden aufrufen. Und dann gibt es noch den / die Programmierer. Wieso sollten die denn nicht sehen dürfen, was in der Instanz einer Klasse vorsich geht?
Hast du denn eigentlich mal ausprobiert was passiert wenn du aus einem Attribut eine read-only Property machst so wie in Beitrag #6? Du änderst hier das ABI - d.h. das Modul ist nicht mehr kompatibel zur alten Version und jedes abhängige Modul bzw. Programm muss neu kompiliert werden. Nur weil es syntaktisch gleich aussieht, ist es dennoch ein ganz anderes paar Schuhe.
Gruß