知识卡片
先满足当前需求
内容
数据表示应优先保存当前契约需要的信息,谨慎为假想功能预留结构。为了未来可能的断开连接而保存直接连接,会引入额外测试、文档和维护成本。发散:YAGNI不是拒绝扩展,而是拒绝无证据的复杂度。
参考来源
- 位置:《你真的会写代码吗-2021》第1章《软件质量和待解决问题》"1.7.2 存储连接"一节(源文件:_epub-src/OEBPS/Text/0010.xhtml)
- 结论依据:原文以是否要为未来的`disconnectFrom`操作预先区分直接/间接连接为例,说明"如果不知道关于该软件未来演进方向的具体信息,就应该警惕这种诱惑",并直接引用YAGNI原则说明只存储当前需要的信息。
- 原始内容:如果只在内存中存储间接连接……只存储间接连接并不能兼容未来的disconnectFrom操作……如果不知道关于该软件未来演进方向的具体信息,就应该警惕这种诱惑。众所周知,程序员容易过度泛化……每个不必要的类成员都需要像其他必要的类成员一样进行测试、编写文档和维护……极限编程运动已为此原则取了一个"你不需要它"(YAGNI)的口号。