发布于 2015-07-23 08:01:11
对静态方法的广泛反感很大程度上是因为担心无法轻松地覆盖测试类或模拟测试另一个类的方法。
对于私有方法,这不是一个问题,所以我的观点是:如果它可以是静态的,那么使它是静态的--这是一种有用的自动文档(“这个方法根本不依赖于任何实例状态”)。您不应该重写助手方法,这样就可以实现静态访问(例如,用输入参数替换字段访问),但是如果这是它的自然形式,那么就没有什么害处和一点好处了。
发布于 2015-07-23 08:09:34
静态方法意味着与类的所有实例相关,而不是与任何特定实例相关。它们在这个意义上类似于静态变量。一个示例是一个静态方法,用于对一个类的实例的所有变量的值进行求和。例如,如果有一个products,它可能有一个静态方法来计算所有产品的平均价格。
任何静态方法都可以成为非静态方法,因此,如果是静态方法,就会声明调用这样一个方法会对您的实例产生什么样的影响,也就是说,除非您将上述实例传递给静态方法(这样就违背了静态方法的目的)。
这个方法没有状态可以正确地完成它的工作,并且可以引用任何实例,所以我会说是的,您应该使它是静态的。但是,一定要将它也保留为私有的,因为它只是在类的上下文中才有意义的方法,在这种情况发生改变之前,它应该保持私有。
如果您发现自己有几个这样的私有静态助手方法,那么您应该考虑创建一个最后一个类,其中的私有构造函数只包含受保护的静态方法,这些方法只能由包中的类调用。
我希望这能回答你的问题。
https://softwareengineering.stackexchange.com/questions/290572
复制相似问题