Sobes.tech
Junior

Какви са принципите DRY и KISS?

sobes.tech AI

Отговор от AI

DRY (Не повтаряй себе си) — принцип, който насърчава избягването на дублиране на код. Всяка част от информацията или логиката трябва да съществува на едно място.

KISS (Запази го просто, глупако) — принцип, насочен към простотата и яснотата на дизайна и логиката. Кодът трябва да бъде възможно най-прост и лесен за поддръжка.

  • Предимства на DRY:
    • Намаляване на грешките: Промените в логиката трябва да се правят само на едно място.
    • Ускоряване на разработката: Не е необходимо да се пише един и същи код няколко пъти.
    • Подобряване на четливостта: Липсата на дублиране прави кода по-структуриран.
  • Предимства на KISS:
    • Лесно разбиране: Простият код е по-лесен за четене и разбиране.
    • Лесно отстраняване на грешки: По-малко потенциални точки за грешки.
    • Бърза поддръжка: Простият код е по-лесен за модифициране и разширяване.

Прилагането на тези принципи:

<?php
// Пример без прилагане на DRY (дублиране на логиката за изчисляване на отстъпка)
function calculatePriceWithDiscountA(float $price): float {
    if ($price > 1000) {
        return $price * 0.9;
    }
    return $price;
}

function calculatePriceWithDiscountB(float $price): float {
    if ($price > 1000) {
        return $price * 0.9;
    }
    return $price;
}

// Пример с прилагане на DRY (извличане на логиката в отделна функция)
function applyDiscount(float $price): float {
    if ($price > 1000) {
        return $price * 0.9;
    }
    return $price;
}

function calculateFinalPriceA(float $price): float {
    return applyDiscount($price);
}

function calculateFinalPriceB(float $price): float {
    return applyDiscount($price);
}

// Пример за прост код (KISS)
function sum(int $a, int $b): int {
    return $a + $b;
}

// По-сложен код, който може да бъде опростен
function complexSum(int $a, int $b): int {
    $result = 0;
    $result += $a;
    $result += $b;
    return $result;
}

Прилагането на тези принципи води до създаване на по-качествен, лесен за поддръжка и разширяване код.