我的开发团队已经开始使用Mockito并且已经定义了“最终”类。我在Joshua Bloch的Effective Java中读到过,在SO线程When to use final中,所有类都应该使用最终的修饰符。在这个线程中存在一些分歧,但我同意强制课程组成的想法,除非继承是有意义的。Java最佳实践与Mockito发生冲突时怎么办
我应该怎么做时,我想使用像一个的Mockito测试框架,要求类没有“最终”修改测试类?我希望别人在开发过程中遇到类似的问题。你的开发团队做了什么决议?
有两个明显的答案,例如使用JMock或在我们想测试的类上移除'final'修饰符,但我们想要坚持一个外部测试框架(除了JUnit),并且可能很难说服其他开发人员删除'最终'修饰符。
谢谢。
制定所有*类* final#肯定不是最佳实践......自从阅读Effective Java已经有一段时间了,但链接线程的共识当然似乎并不意味着这一点。你应该把类标记为'final'来表示他们不应该被延长的一些原因 - 如果没有理由,它就会增加不必要的复杂性 - 就像你发现的那样。另外,如果您意识到您确实需要将课程扩展到某个地方,则必须更改原始课程的代码以编写新课程 - 违反开放/关闭原则。 – Nate 2010-01-13 03:38:43