【发布时间】:2011-01-29 01:23:43
【问题描述】:
我正在做代码审查,遇到了一个使用所有静态方法的类。入口方法接受几个参数,然后开始调用其他静态方法,传递入口方法收到的全部或部分参数。
它不像 Math 类,它的实用函数基本不相关。在我自己的正常编程中,我很少编写 Resharper 弹出并说“这可能是一个静态方法”的方法,当我这样做时,它们往往是无意识的实用方法。
这种模式有什么问题吗?如果一个类的状态是保存在字段和属性中还是使用参数在静态方法之间传递,这只是个人选择的问题吗?
UPDATE:正在传递的特定状态是来自数据库的结果集。该类的职责是从数据库的结果集中填充一个 excel 电子表格模板。我不知道这是否有什么不同。
【问题讨论】:
-
在您编辑后,我会说是的,绝对应该是一个实例化的类,因为您正在维护状态(Excel 电子表格),所以我有一个类可以将您的结果集放在构造函数,以及另一种方法,如“Save(string filename)”或“Save(Worksheet excel)”来创建 Excel 电子表格。我猜的所有其他方法都是辅助方法,应该是私有的。
-
@Andy 我不同意。这取决于它的使用方式。如果相同的信息被多次次传递到方法中,那么它应该是一个实例,它作为一个成员。但如果它只传入一次(然后传入帮助程序/子方法),那么它可能没问题。不过,帮助程序/子方法确实需要是私有的。
-
写它的人一定对函数的黑盒化深信不疑。