Jul*_*ian 5 oop tdd unit-testing
TDD现在风靡一时,越来越多的软件商店正在转向敏捷,scrum等.我当然可以看到自动化测试的优势,但我也看到TDD与良好的面向对象设计的某些原则相矛盾.
TDD要求您在代码中插入接缝,通过接口公开实现细节.依赖注入或协作者注入违反了信息隐藏原则.如果您的类使用协作者类,那么这些协作者的构造应该是类的内部,而不是通过构造函数或接口公开.
我没有看到任何文献解决编写可测试代码之间的冲突,同时坚持封装,简单和信息隐藏的原则.是否以任何标准方式解决了这些问题?
Mar*_*ann 10
您认为实现细节的方法和类实际上是表示轴的接缝,您可以沿着这些轴来改变组件并将组件重新组合成新的星座.
关于封装的经典想法往往过于粗糙,因为当你隐藏很多移动部件时,你也会使代码非常不灵活.它也往往违反了很多SOLID原则 - 最突出的是单一责任原则.
大多数面向对象的设计模式往往是相当细粒度的,并且非常适合SOLID原则,这是适当的面向对象设计细粒度的另一个指标.
如果您的类使用协作者类,那么这些协作者的构造应该是类的内部,而不是通过构造函数或接口公开.
这是混合在一起的两种不同的东西.我同意在大多数情况下,协作者不应通过接口公开.但是,通过构造函数公开它们是正确的做法.构造函数本质上是类的实现细节,而接口提供真正的API.
如果要保留粗粒度API以定位默认功能,您仍可以通过提供Facade来实现.有关更多详细信息,请参阅此文章:依赖注入(DI)"友好"库
| 归档时间: |
|
| 查看次数: |
468 次 |
| 最近记录: |