我希望我能正确地表达这个问题。在处理具有静态和实例可变字段的类中的状态和可测试性时,我有一个担忧。
由于生命周期/范围的不同,静态字段是否本质上构成了不同的类/职责/实例?
如果是这样:那么实例字段不应该也是一个单独的类/数据结构吗?
然后:如果是这样,那么不应该所有类都是无状态的,只接收它们对构造的依赖,然后都应该是不可变的吗?
最后,这是否意味着函数式编程也是进行面向对象编程的正确方法?
我希望我能正确地表达这个问题。在处理具有静态和实例可变字段的类中的状态和可测试性时,我有一个担忧。
由于生命周期/范围的不同,静态字段是否本质上构成了不同的类/职责/实例?
如果是这样:那么实例字段不应该也是一个单独的类/数据结构吗?
然后:如果是这样,那么不应该所有类都是无状态的,只接收它们对构造的依赖,然后都应该是不可变的吗?
最后,这是否意味着函数式编程也是进行面向对象编程的正确方法?
你不应该有(真的)可变的静态字段。那是蹩脚的设计。函数式编程使事情变得容易得多。我会把这些问题分开:
ETC..
为了可测试性
本质上,如果数据库(磁盘)和请求层(web、ui 等)符合要求,所有这些都可以以功能方式完成。在实践中,您尝试在 pretty 和 functionalish 之间做“纯粹”的部分,并使用设计模式来保护它免受外部污垢的影响。