我在决定构建某个类的最佳方式时遇到了一些麻烦。该类将接受一些字符串作为设置,方法将根据设置创建不同类型的图表....
例如。可以这样称呼...
c = ChartEngine(type='line', labels='foo bar', data='1, 2', data2='3, 4')
chart = c.make_chart()
IDK 如果最好将其构造为一个类,或者只是一个将调用同一模块中其他函数的函数...IDK 如果我应该将逻辑放在 __init__ 函数中将设置调用 make_chart 函数,或者如果有其他方法。
def __init__(*settings*):
self.type = type
self.labels = labels
self.data = data
....
make_chart(self.type, self.labels, self.data):
if self.type == "line":
line_chart(settings)
elif self.type == "bar":
bar_chart(settings)
...
你会如何构建这样的类?
请您参考如下方法:
将测试用作设计工具。为您想要的一个微不足道的最小功能编写测试。让它失败,然后编写使其通过所需的最少代码。然后用另一个特性编写另一个测试,让它失败等等。使用此开发周期 (TDD),您可以从用户的角度进行设计,并对您的实现实现适当的封装和抽象。您可能想了解 pytest模块。
乍一看,我会说您计划的类(class)会了解太多不同的东西。阅读有关 SRP 和其他 SOLID 原则的信息,以帮助您着手解决这个问题。最重要的是,只实现您现在需要的,仅此而已。
最后,ChartEngine 看起来像是抽象工厂模式的用例,很难用优雅的代码实现。从最简单的用例开始,尽早重构。
