Whouzuo: OOP-Propertys mit Accessor

Beitrag lesen

Meine Gedanken zu Getter/Setter habe ich hier mal aufgeschrieben. Excerpt: Grundsätzlich spricht nichts dagegen, einen Getter so zu benennen, wie ein Attribut namentlich lautet. Ein Setter jedoch, setzt nicht irgendein Attribut schlechthin, sondern verändert die gesamte Instanz! Setter-Namen like setAttributeName() sind irreführend, weil ein Setter nicht nur ein Attribut ändert sondern die Instanz selbst, wobei diese Veränderungen nicht nur ein sondern auch mehrere Attribute betreffen können (Beispiel siehe Link).

Als Verfechter funktionaler Programmierung und insbesondere vom Einsatz von Immutabilität finde ich folgendes sehr ungünstig:

$sca->wochentag; # Samstag
    $sca->add(1);
    $sca->wochentag; # Sonntag
    $sca++;          # overload "++"
    $sca->wochentag; # Montag

Das macht es sehr schwierig darüber zu argumentieren, wie sich das Programm zu einem bestimmten Zeitpunkt verhält. In so einem Fall sollte man eine neue Scaliger (was immer das ist) Instanz erzeugen, die dann das morgige Datum enthält. also so:

my $dateTomorrow = //hier Datum von heute zuweisen
my $scaTomorrow = Scaliger->new( $dateTomorrow);