-
KISS старается искать простые решения, а YAGNI просто не делает никаких решений!
-
В качестве основной цели и/или ценности декларируется отказ от избыточной функциональности, - то есть отказ добавления функциональности, в которой нет непосредственной надобности.
Начиная планирование нового проекта, постарайтесь учесть следующее:
-
Достичь меньшей сложности путем уменьшения уровня абстракций.
Подумайте, вам действительно нужен Hibernate? Старайтесь тщательнее оценивать все, что может добавить сложности вашей системе. Учтите, что зачастую многие абстракции реализовываются в сторонних продуктах и библиотеках. Каждая из новых библиотек добавляет сложности. Обновления, патчи, исправления в безопасности - все это вам придется делать/применять в будущем.
-
Разделить функционал от возможностей (features).
-
Учесть небольшие не-функциональные требования.
-
Определить затратные по времени задачи, чтобы избавиться от них.
-
Тратится время, которое было бы затрачено на добавление, тестирование и улучшение необходимой функциональности.
-
Новые функции должны быть отлажены, документированы и сопровождаться. Новая функциональность ограничивает то, что может быть сделано в будущем, - ненужные новые функции могут впоследствии помешать добавить новые нужные.
Если вся функциональность не документирована, она может так и остаться неизвестной пользователям, но может создать для безопасности пользовательской системы различные риски.
-
Пока новые функции действительно не нужны, трудно полностью предугадать, что они должны делать, и протестировать их. Если новые функции тщательно не протестированы, они могут неправильно работать, когда впоследствии понадобятся.
-
Это приводит к тому, что программное обеспечение становится более сложным (подчас чрезмерно сложным).
-
Добавление новой функциональности может привести к желанию ещё более новой функциональности, приводя к эффекту «снежного кома».
Также важно понимать, что все это вовсе не значит, что можно сесть и писать плохой код, приправленный хаками. Вы просто пишете небольшое приложение, а не плохое! Можно согласиться на немного возросшие затраты по поддержке - мы живем в реальном мире.