Schreiben Sie keinen doppelten Code (DRY)


Versuchen Sie, dem DRY-Prinzip zu folgen

Vermeiden Sie das Duplizieren von Code nach besten Kräften. Dies ist ein sehr schlechtes Verhalten. Das Duplizieren von Code bedeutet normalerweise, dass Sie die Logik ändern müssen ein Ort.

Stellen Sie sich vor, Sie würden ein Restaurant betreiben und die Käufe und Verkäufe in Ihrem Lager aufzeichnen: alle Kartoffeln, Zwiebeln, Knoblauch, Paprika usw. Wenn Sie über mehrere Listen zum Verwalten Ihrer Einkäufe und Verkäufe verfügen, müssen Sie diese alle aktualisieren, wenn Sie mit einigen Kartoffeln kochen. Wenn Sie nur eine Liste haben, gibt es nur einen Ort zum Aktualisieren.

Normalerweise sollten Sie beim Kopieren von Code zwei oder mehr leicht unterschiedliche Logiken haben. Die meisten davon sind gleich, aber aufgrund ihrer Unterschiede müssen Sie zwei oder mehr isolierte, aber auf ähnliche Weise entfernen Code duplizieren bedeutet, ein function/module/class zu verwenden, um eine Abstraktion zu erstellen, die den Unterschied bewältigen kann.

Die Verwendung der richtigen Abstraktion ist von entscheidender Bedeutung. Deshalb müssen Sie lernen, die SOLID Prinzipien einzuhalten, die im Kapitel „Klassen“ beschrieben sind. Unangemessene Abstraktion ist schlimmer als das Duplizieren von Code. Seien Sie also vorsichtig! Abgesehen davon: Wenn Sie eine vernünftige Abstraktion entwerfen können, dann tun Sie es! Schreiben Sie keinen doppelten Code, sonst werden Sie feststellen, dass Sie jedes Mal, wenn Sie einen Teil der Logik ändern möchten, ihn an mehreren Stellen ändern müssen.

Schlecht:

function showDeveloperList(array $developers): void
{
    foreach ($developers as $developer) {
        $expectedSalary = $developer->calculateExpectedSalary();
        $experience = $developer->getExperience();
        $githubLink = $developer->getGithubLink();
        $data = [
            $expectedSalary,
            $experience,
            $githubLink
        ];
 
        render($data);
    }
}
 
function showManagerList(array $managers): void
{
    foreach ($managers as $manager) {
        $expectedSalary = $manager->calculateExpectedSalary();
        $experience = $manager->getExperience();
        $githubLink = $manager->getGithubLink();
        $data = [
            $expectedSalary,
            $experience,
            $githubLink
        ];
 
        render($data);
    }
}

Gut:

function showList(array $employees): void
{
    foreach ($employees as $employee) {
        $expectedSalary = $employee->calculateExpectedSalary();
        $experience = $employee->getExperience();
        $githubLink = $employee->getGithubLink();
        $data = [
            $expectedSalary,
            $experience,
            $githubLink
        ];
 
        render($data);
    }
}

Ausgezeichnet:

Es ist besser, den Code kompakter zu machen

function showList(array $employees): void
{
    foreach ($employees as $employee) {
        render([
            $employee->calculateExpectedSalary(),
            $employee->getExperience(),
            $employee->getGithubLink()
        ]);
    }
}