因为我最近在搞单元测试,发现公司项目代码的类里面有大片大片的private方法,导致其对测试不友好。我就浏览了下JDON源代码,发现都是PUBLIC的方法,还没看到PRIVATE的方法。
是因为我没看到,还是因为JDON的都是PUBLIC方法?这个体现出什么样的设计思路呢?
我刚接触JDON,所以对其不熟悉,请谅解。
[该贴被fortry于2008-12-18 00:13修改过]
因为我最近在搞单元测试,发现公司项目代码的类里面有大片大片的private方法,导致其对测试不友好。我就浏览了下JDON源代码,发现都是PUBLIC的方法,还没看到PRIVATE的方法。
是因为我没看到,还是因为JDON的都是PUBLIC方法?这个体现出什么样的设计思路呢?
我刚接触JDON,所以对其不熟悉,请谅解。
[该贴被fortry于2008-12-18 00:13修改过]
另外建议全部使用protected代替private
我倒是觉得改为package的或者protected的话,对测试比较友好。
大家似乎都不建议方法作用域写成private,为什么?
[该贴被fortry于2008-12-18 23:26修改过]
做设计一个必须遵守的原则是绝对不要轻易地说“不能”,比如private,使用权永远都在使用者手中而不是在设计者手中。如果连创造者都说“我不能”了,下一任还有可能说“我能”么,这样的设计只能是路越走越窄,留下充足余地才有升华的机会。
Ant对于多数人来讲已经是很好的设计了吧,但确实有一次我是多么希望可以重载一个他的private函数呀。
导致其对测试不友好 从何说起
private方法 被public方法调用 你直接测试public方法即可
Banq大大 这个称呼很个性
Banq大大,我看到JDON里面的代码都很简洁,是良好的设计的必然结果么?公司代码里面PUBLIC方法就调用很多PRIVATE方法,PRIVATE方法又调用另外的PRIVATE方法,这是复杂业务逻辑导致的必然结果么?
另外,Banq大大,如果要学习设计方面的知识,是否需要阅读框架的源代码来看看什么是优秀的设计? 虽然大大您不赞成看框架的源代码。
很多时候我们都会发现编码和测试甚至是部署的时候遇到了很难解决的问题,其实这些问题的根本原因就是设计的失败,一个良好的设计就是为了解决实际应用中的问题。
业务过程的复杂通常带来系统结构的复杂,但是局部代码的简洁和优雅是可以被始终保证的。现行的各种框架、容器都是为了做到这一点而产生。
所以如果你发现代码既不能良好的测试、又不能被良好的阅读,就需要反过头去考虑设计层次的缺陷了,这是一定的。你们的项目现在遇到的一定是系统层面的设计问题。