我最近一直在玩函数式编程,关于副作用的主题有很好的处理方法,为什么应该包含它们等等。在使用 OOP 的项目中,我正在寻找一些资源来制定一些策略最小化副作用和/或状态。
RESTful Web Services一书就是一个很好的例子,它为您提供了在 Web 应用程序中最小化状态的策略。还有什么其他存在?
请记住,我不是在寻找另一本 OOP 分析师/设计模式书籍(尽管良好的封装和松散耦合有助于避免副作用),而是寻找主题本身就是状态/副作用的资源。
一些编译的答案
- 主要关心状态的 OOP 程序员这样做是因为并发性,因此请阅读Java 并发实践。[正是我想要的]
- 使用 TDD 使副作用更明显[我喜欢它,例如:你的设置越大,运行测试所需的状态就越多 = 好警告]
- 命令查询分离 [好东西,防止更改通常令人困惑的函数参数的副作用]
- 方法只做一件事,如果它们改变了对象的状态,可能会使用描述性的名称,这样简单明了。
- 使对象不可变 [我真的很喜欢这个]
- 将值作为参数传递,而不是将它们存储在成员变量中。[我没有链接这个;它使函数原型变得混乱,并且被 Clean Code 和其他书籍积极劝阻,尽管我承认它有助于解决状态问题]
- 重新计算值而不是存储和更新它们[我也很喜欢这个;在我工作的应用程序中,性能是一个小问题]
- 同样,如果可以避免,请不要复制状态。让一个对象负责保存它,并让其他人在那里访问它。【OOP基本原理,好建议】