我正在面对一个可能正在工作的重构项目,并且在掌握大多数网站上显示的单一责任原则示例时遇到了一些麻烦。它是将调制解调器的连接和发送/接收方法分为两个不同的对象的一种。顺便说一下,该项目是使用Python编写的,但我认为这不是特定于语言的问题。

目前,我正在努力分解某人创建的1300行Web服务驱动程序类(随意分为两类,但本质上是一类)。在职责级别上,我知道我需要将连接,配置和XML操作职责划分为单独的类。现在,所有这些都由类使用字符串操作和httplib.HTTPConnection对象处理请求来处理。

因此,根据此示例,我将拥有一个仅处理http连接的类,以及一个通过该连接传输数据的类,但是它们将如何通信?如果在构造数据传输类时需要传递连接,是否会重新耦合类?我只是很难掌握这个传输类实际上是如何访问已建立的连接的。

最佳答案

对于一个庞大的类(> 1000行代码),您不仅要担心SRPDIP,还要担心更多。我有(或“我打架”)类似大小的课程,根据我的经验,您必须尽可能进行单元测试。仔细重构(非常小心!)自动测试是您的朋友-无论是如上所述的单元测试还是回归测试,集成测试,验收测试,或者您能够自动执行的任何测试。然后重构。然后运行测试。再次重构。测试。重构。测试。

有一本非常好的书描述了这个过程:Michael Feather的"Working Effectively With Legacy Code"。阅读。

例如,绘制一幅图片,显示该类的所有方法和成员的依赖关系。这可能有助于您识别责任的不同“领域”。

关于python - 经典的单一责任原则示例中的对象应该如何通信?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32829097/

10-10 03:34