Вопрос проверяет понимание того, как избегать избыточной сложности и преждевременных оптимизаций.
YAGNI означает «вам это не понадобится». Принцип говорит, что не стоит писать код на будущее без реальной необходимости. Лишняя функциональность усложняет поддержку и тестирование. Часто такие возможности так и не используются. Лучше добавлять код тогда, когда он действительно нужен.
YAGNI — это принцип, который защищает проект от ненужной сложности и переусложненной архитектуры.
YAGNI (You Aren’t Gonna Need It) — принцип разработки, который призывает не реализовывать функциональность, пока она реально не требуется.
Когда код пишется «на всякий случай»:
увеличивается объем системы
растет количество багов
усложняется понимание логики
замедляется разработка
При этом большая часть такой логики никогда не используется.
class ReportService:
def generate_pdf(self):
pass
def generate_excel(self):
pass
def generate_json(self):
pass
Если сейчас нужен только PDF:
остальные методы — лишние
они требуют поддержки
они усложняют тесты
class ReportService:
def generate_pdf(self):
pass
Когда появится реальная потребность:
можно безопасно добавить новый формат
требования будут понятнее
реализация будет точнее
YAGNI тесно связан с:
KISS
SOLID
Agile-подходами
YAGNI не запрещает расширение, но напоминает: сначала реальная задача, потом код, а не наоборот.