情况是这样的:我有一堂课做得太多了。它主要用于访问配置信息,但它也有数据库连接。它是作为单例实现的,因此这也使单元测试变得困难,因为大多数代码都与它紧密耦合。这更成问题,因为它创建了一个导入时依赖项(我们在 Python 中这样做),这意味着某些模块必须按特定顺序导入。理想情况下,我想将其分为两个类并使其成为非单例。
幸运的是,我的雇主已经意识到这种测试是好的,并且如果它使代码更具可测试性,他愿意允许我进行这样的更改。但是,我怀疑他们是否愿意让我在上面花费太多时间。我宁愿逐步解决这个问题,也不愿过于激进。
所以,我在这里看到三个选择:
- 将配置对象分解为(单例)配置对象和(非单例)数据库对象。这至少可以让我将数据库作为导入时依赖项删除。
- 使配置对象成为非单例并将其传递给需要它的对象。我觉得这更好地满足了我们的短期需求,但我认为这需要更多的时间。
- 做一些我没有想到的你在回答中建议的事情。:-)
那我该怎么办?