Schlagwort-Archiv: implementation patterns

Named Constructor

oop clean code named constructor Um eine Methode leicht verständlich zu machen, gibt es viele Möglichkeiten. Man kann die Parameter benennen oder den Methodennamen selbst dazu nutzen. Hat man zwei Methoden, die fast das Selbe machen, dabei aber unterschiedlich Parameter erwarten, kann man dies anhand des Namens deutlich machen:

class Date
{
    public function setTimestamp($value)
    {
        // ...
    }

    public function setAtomFormattedDate($value)
    {
        // ...
    }

    public function setRssFormattedDate($value)
    {
        // ...
    }

    
    // ...
    
}

Was aber macht man, wenn man den Wert schon im Konstruktor übergeben will? Weiterlesen

Guard Clauses

Oft brauche ich eine Funktion, die mir einen von verschiedenen Faktoren abhängigen Wert zurück liefert. Das folgende Beispiel stammt aus der Berechnung von Bonuspunkten für einen Onlineshop.

public function getCreditPoints()
{
    $points = $this->_getBasisPoints();

    if ($this->_isPayedWithCreditCard()) {
        $points *= 1.1;
    } else if ($this->_isPayedWithPrepayment()) {
        $points *= 1.25;
    }
    return $points;
}

Der Code ist soweit okay, lässt sich aber in einer Hinsicht noch optimieren. Jeder, der sich die Methode anschaut, muss sich sowohl beim if-Block als auch beim elseif-Block merken, was bisher passiert ist. Denn zu dem Zeitpunkt weiß der Leser ja noch nicht, dass mit $points nichts mehr gemacht wird.

Weiterlesen