Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
KISS (Keep It Simple, Stupid) — Принцип простоты
KISS — это принцип разработки: простое решение лучше сложного. Выбирай самый простой подход, который решает текущую проблему, без излишних функций и абстракций.
Суть принципа
// Переусложнение (нарушение KISS)
class UserManager {
private $logger;
private $cache;
private $database;
private $eventDispatcher;
public function __construct(...$dependencies) {
// Кучу зависимостей для простой операции
}
public function getUser($id) {
// 50 строк кода для получения пользователя
}
}
// Простое решение (KISS)
class User {
public static function find($id) {
return DB::table('users')->find($id);
}
}
User::find(1); // Просто!
Примеры KISS
Валидация:
// Переусложнение
class ComplexValidator implements ValidatorInterface {
public function validate($data) {
// 100 строк с абстракциями
}
}
// KISS
function validateEmail($email) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new InvalidEmailException();
}
}
Логирование:
// Переусложнение
class Logger implements LoggerInterface {
// 200 строк кода
}
// KISS
file_put_contents('app.log', date('Y-m-d H:i:s') . ' ' . $msg . "\n", FILE_APPEND);
KISS vs Оверинжиниринг
// ЗАДАЧА: получить пользователей по возрасту
// Оверинжиниринг (50 строк, 4 файла)
interface UserRepositoryInterface {}
class EloquentUserRepository implements UserRepositoryInterface {}
class UserService {
public function __construct(UserRepositoryInterface $repo) {}
public function getByAge($age) {}
}
// KISS (2 строки)
Route::get('/users/{age}', function($age) {
return User::where('age', $age)->get();
});
Когда усложнять?
Начинай с простого. Усложняй только когда:
-
Требования меняются часто
- Есть 3 способа платежа и нужен 4-й? Тогда добавляй интерфейс PaymentProcessor
- А не раньше!
-
Код используется в 3+ местах
- Одна функция используется в 5 контроллерах? Выноси в сервис
- При 1-2 местах копируй спокойно
-
Нужна специфичная производительность
- 100k пользователей и медленно? Добавляй кэш
- При 1000 пользователей не нужен
Правило 3
Не спеши с абстракцией:
- 1 раз повторилось — OK
- 2 раза повторилось — OK
- 3 раза повторилось — выноси в функцию
Не создавай классы на будущее. Не добавляй функции может потребуется. Код эволюционирует вместе с требованиями.
Практические советы
- Напиши просто первый раз
function getUser($id) {
return DB::table('users')->find($id);
}
- Добавь абстракцию когда нужна
interface UserRepository {}
- Не усложняй для "правильной архитектуры"
KISS vs DRY
Иногда конфликтуют. Решение: Rule of Three.
- 1 дублирование: OK
- 2 дублирования: OK
- 3 дублирования: выноси
Лучше написать простой, понятный код, чем гибкий, но непонятный.
Вывод
KISS = Простая архитектура + Легкое понимание + Меньше багов