Перейти к основному содержимому

20. Чистый код и лучшие практики

Что такое DRY и KISS?​

Junior

Ответ:

  • DRY: Don't Repeat Yourself — не повторяйся.
  • KISS: Keep It Simple, Stupid — делай проще.

Что такое YAGNI?​

Junior

Ответ: You Ain't Gonna Need It — «Тебе это не понадобится». Не реализуйте функциональность, пока она действительно не потребуется.


Что такое «Композиция вместо наследования» (Composition over Inheritance)?​

Middle

Ответ: Принцип, предлагающий достигать полиморфного поведения и повторного использования кода путём композиции объектов с другими объектами, реализующими нужную функциональность, вместо наследования от базового или родительского класса.


Представьте, что у вас есть старый класс в монолите, содержащий множество методов, и его нужно изменить. Как бы вы провели рефакторинг?​

Senior

Ответ:

  1. Разобраться и покрыть тестами: Написать тесты для существующей функциональности, чтобы гарантировать отсутствие регрессий при рефакторинге.
  2. Определить зоны ответственности: Выявить ключевые обязанности класса и вынести их в отдельные классы с единственной ответственностью (SRP).
  3. Убрать связанность: Использовать Dependency Injection для отвязки класса от его зависимостей, повышая тестируемость.
  4. Инкрементальный рефакторинг: Проводить рефакторинг небольшими шагами, запуская тесты после каждого изменения.
  5. Применять паттерны проектирования: Использовать паттерны Strategy, Factory или Service-объекты для обработки сложной логики или множественных условных ветвлений. Подробное руководство по паттернам проектирования

Что такое закон Деметры (Law of Demeter)?​

Senior

Ответ: Принцип проектирования, согласно которому модуль не должен знать о внутреннем устройстве объектов, с которыми он работает. «Не разговаривай с незнакомцами.»