Принцип YAGNI "гласит, что вам не следует сосредотачиваться на предоставлении функциональности до того, как вам понадобится, поскольку" вам это не понадобится ".
Обычно я обычно пользуюсь здравым смыслом над любым правилом, независимо от того, что есть, но есть некоторые моменты, когда я чувствую, что это полезно для разработки или будущего доказательства, если у вас есть веские причины, даже если это возможно, вы никогда не будете использовать он.
Фактический случай, который у меня сейчас есть в моих руках, более или менее похож на это:
У меня есть приложение, которое должно работать с простейшим протоколом связи (уровень 4 OSI). Этот протокол имеет желаемый набор характеристик (например, следующую спецификацию NORM), которые обеспечивают надежность приложения, но которые не являются строго обязательными (многоадресная рассылка UDP может выполнять приемлемую).
Также существует тот факт, что приложение, вероятно, (но не обязательно) будет использоваться другими клиентами в будущем, которое не будет иметь доступа к собственному решению и, следовательно, потребуется другое решение. Я знаю, что вероятность того, что другой клиент для приложения будет высок.
Итак, что вы думаете? Должен ли я просто разрабатывать проприетарный протокол и оставлять рефакторинг, извлечение интерфейса и т.д., Когда мне это действительно нужно, или я должен теперь дизайн думать о будущем (не до сих пор)?
Примечание.. Чтобы быть ясным, мне интересно услышать все мнения по общему вопросу (когда нарушать YAGNI), но мне бы очень хотелось, чтобы некоторые советы или мысли о моем текущем дилемма:)