YAGNI “原则”指出,您不应该在需要之前专注于提供功能,因为无论如何“您不会需要它”。
无论如何,我通常倾向于在任何规则之上使用常识,但有时我觉得如果你有充分的理由,过度设计或未来证明某些东西是有用的,即使你可能永远不会使用它。
我现在手头的实际情况或多或少是这样的:
我有一个必须通过简单的专有通信协议(OSI 4 级)运行的应用程序。该协议具有一组理想的特性(例如遵循 NORM 规范),这些特性为应用程序提供了鲁棒性,但并非严格要求(UDP 多播可以执行可接受的)。
还有一个事实是,该应用程序将来可能(但不一定)被其他无法访问专有解决方案的客户使用,因此需要另一个解决方案。事实上,我知道该应用程序的另一个客户的可能性很高。
那么,你的想法是什么?我应该只为专有协议进行设计,然后将重构、接口提取等留到我真正需要的时候,还是应该现在就考虑(不是那么远)未来进行设计?
注意:为了清楚起见,我有兴趣听到对一般问题(何时违反 YAGNI)的各种意见,但我真的很想对我目前的困境提出一些建议或想法:)