Skip to content

Latest commit

 

History

History
40 lines (21 loc) · 4.08 KB

File metadata and controls

40 lines (21 loc) · 4.08 KB

You ain’t gonna need it (Вам это не понадобится)

  • KISS старается искать простые решения, а YAGNI просто не делает никаких решений!

  • В качестве основной цели и/или ценности декларируется отказ от избыточной функциональности, - то есть отказ добавления функциональности, в которой нет непосредственной надобности.


Планирование проекта

Начиная планирование нового проекта, постарайтесь учесть следующее:

  • Достичь меньшей сложности путем уменьшения уровня абстракций.

    Подумайте, вам действительно нужен Hibernate? Старайтесь тщательнее оценивать все, что может добавить сложности вашей системе. Учтите, что зачастую многие абстракции реализовываются в сторонних продуктах и библиотеках. Каждая из новых библиотек добавляет сложности. Обновления, патчи, исправления в безопасности - все это вам придется делать/применять в будущем.

  • Разделить функционал от возможностей (features).

  • Учесть небольшие не-функциональные требования.

  • Определить затратные по времени задачи, чтобы избавиться от них.

Последствия YAGNI

  • Тратится время, которое было бы затрачено на добавление, тестирование и улучшение необходимой функциональности.

  • Новые функции должны быть отлажены, документированы и сопровождаться. Новая функциональность ограничивает то, что может быть сделано в будущем, - ненужные новые функции могут впоследствии помешать добавить новые нужные.

    Если вся функциональность не документирована, она может так и остаться неизвестной пользователям, но может создать для безопасности пользовательской системы различные риски.

  • Пока новые функции действительно не нужны, трудно полностью предугадать, что они должны делать, и протестировать их. Если новые функции тщательно не протестированы, они могут неправильно работать, когда впоследствии понадобятся.

  • Это приводит к тому, что программное обеспечение становится более сложным (подчас чрезмерно сложным).

  • Добавление новой функциональности может привести к желанию ещё более новой функциональности, приводя к эффекту «снежного кома».

Также важно понимать, что все это вовсе не значит, что можно сесть и писать плохой код, приправленный хаками. Вы просто пишете небольшое приложение, а не плохое! Можно согласиться на немного возросшие затраты по поддержке - мы живем в реальном мире.