Читали ли вы книгу «Чистый код»?

Ответ

Да, "Чистый код" Роберта Мартина — одна из ключевых книг, повлиявших на мой стиль программирования. Я не просто читал теорию, а активно внедряю эти принципы в рабочие проекты.

Вот как я применяю основные идеи на практике:

  • Самодокументируемый код через именование: Я трачу время на подбор точных имён. Например, вместо $d использую $elapsedTimeInDays, а вместо функции process()validateAndProcessOrder().
  • Короткие функции с одной ответственностью: Я стремлюсь к функциям длиной не более 10-15 строк. Если функция делает больше одного действия, я выносу логику.
    // Было:
    function handleUserRegistration($data) {
        // валидация, сохранение в БД, отправка email, логирование — всё в одном месте
    }
    // Стало:
    function handleUserRegistration($data) {
        $validatedData = $this->validator->validate($data);
        $user = $this->userRepository->save($validatedData);
        $this->mailer->sendWelcomeEmail($user);
        $this->logger->info('User registered', ['id' => $user->id]);
    }
  • Минимум аргументов: Я рефакторю методы с большим числом параметров, объединяя их в Data Transfer Objects (DTO) или Value Objects.
    // Плохо:
    function createOrder($userId, $productId, $quantity, $address, $discountCode) {...}
    // Лучше:
    function createOrder(CreateOrderCommand $command) {...}
  • Комментарии для "почему", а не "что": Я комментирую только неочевидные бизнес-решения или обходы странного поведения сторонней библиотеки, а не то, что делает каждая строка кода.

Эти практики напрямую влияют на поддерживаемость кодовой базы и скорость онбординга новых разработчиков в проект.

Ответ 18+ 🔞

Э, слушай, а вот про "Чистый код" Мартина — это вообще святое, ёпта. Книга, которая реально перепахала мозг, а не просто пылится на полке. Я её не просто проглотил, я эти принципы в каждый проект впендюриваю, как маньяк.

Вот как это в жизни выглядит, без всякой воды:

  • Имена, которые сами всё объясняют: Я могу потратить минут десять, чтобы придумать имя переменной. Это не занудство, это спасение от будущего ебала. Вместо какого-нибудь $d (что это, блядь, дни, доллары или дельфин?) будет $elapsedTimeInDays. Функция process() превращается в validateAndProcessOrder(). Сразу ясно, что она делает, и волнение ебать отпадает.
  • Функции-коротышки с одной тачкой: Я стараюсь, чтобы функция была как шпион — знала одну свою миссию и не лезла не в своё дело. Максимум 10-15 строк. Если вижу, что внутри намешано всего, сразу режу.
    // Было: Пизда рулю. Одна функция — и валидатор, и сантехник, и почтальон.
    function handleUserRegistration($data) {
        // валидация, сохранение в БД, отправка email, логирование — всё в одном месте
    }
    // Стало: Каждый занимается своим делом. Красота.
    function handleUserRegistration($data) {
        $validatedData = $this->validator->validate($data);
        $user = $this->userRepository->save($validatedData);
        $this->mailer->sendWelcomeEmail($user);
        $this->logger->info('User registered', ['id' => $user->id]);
    }
  • Аргументов — минимум: Когда вижу функцию с пятью параметрами, у меня терпения ноль ебать. Это же манда с ушами получается, которую потом вызывать — сплошное мучение. Сразу заворачиваю всё в DTO или Value Object.
    // Плохо: Хуй с горы. Запутаешься, что куда передавать.
    function createOrder($userId, $productId, $quantity, $address, $discountCode) {...}
    // Лучше: Всё аккуратно упаковано в один объект. Удобно и понятно.
    function createOrder(CreateOrderCommand $command) {...}
  • Комментарии не для дураков: Если код написан нормально, он и так всё объясняет. Я пишу комментарии только когда нужно объяснить почему сделано так, а не иначе. Например, "этот костыль из-за бага в библиотеке X, версия 2.1". А комментировать каждую строчку типа $i++ — это уровень ебанько-стажёра.

Чувак, поверь, когда так делаешь, жить становится проще. Код не превращается в болото, в которое страшно лезть через полгода. Новые ребята на проекте вникают в разы быстрее, а не сидят с круглыми глазами, пытаясь понять, что тут за хитрая жопа накодирована. Это не теория, это чистая практика, которая экономит кучу нервов и времени.