YAGNI «принцип» гласит, что вам не следует сосредотачиваться на предоставлении функциональности до того, как вы захотите, «в любом случае вам это не понадобится».Когда нужно нарушать ЯГНИ?
Обычно я обычно пользуюсь здравым смыслом над любым правилом, независимо от того, что есть, но есть некоторые моменты, когда я чувствую, что полезно что-то сделать над дизайном или будущим доказательством, если у вас есть веские причины, даже если это возможно, вы никогда не будете используй это.
Фактический случай у меня есть в моих руках прямо сейчас, более или менее, как это:
У меня есть приложение, которое должно работать над простой собственный протокол связи (уровень OSI 4). Этот протокол имеет желаемый набор характеристик (например, следующую спецификацию NORM), которые обеспечивают надежность приложения, но которые не являются строго обязательными (многоадресная рассылка UDP может выполнять приемлемую).
Существует также тот факт, что приложение, вероятно, (но не обязательно) будет использоваться другими клиентами в будущем, которое не будет иметь доступа к запатентованному решению и, следовательно, потребуется другое решение. Я знаю, что вероятность того, что другой клиент для приложения высок.
Итак, что вы думаете? Должен ли я просто разрабатывать проприетарный протокол и оставлять рефакторинг, извлечение интерфейса и т. Д., Когда мне это действительно нужно, или мне должно быть сейчас думать о будущем (пока)?
Примечание: Просто чтобы быть ясно, я заинтересован услышать все виды мнений к общему вопросу (если нарушать YAGNI), но я бы очень хотел, некоторые советы и мысли о моей нынешней дилемме :)
Это более подходящее задание на http://programmers.stackexchange.com в настоящее время ... –
Представьте, что системы знакомств COBOL используют только 2 цифры за год. Это было бы хорошей областью для нарушения YAGNI :) –