首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用实例成员的私有方法-更好的静态?

不使用实例成员的私有方法-更好的静态?
EN

Software Engineering用户
提问于 2015-07-23 07:56:03
回答 2查看 2.4K关注 0票数 3

我有一个私有助手方法,它不使用实例变量或方法,我觉得如果它是静态的,它就不会那么混乱(这样,它可以访问的点数更少)。

我有点不确定这个问题是否也适用于私有方法。

我也看过第二个问题,但是测试不会直接测试私有的静态助手方法。

问:为什么我不应该使我的私人助手方法是静态的?是这种混乱可能会导致某人在静态环境中重用它吗?据我所见,那应该没问题。

如有任何想法和建议,敬请见谅。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-07-23 08:01:11

对静态方法的广泛反感很大程度上是因为担心无法轻松地覆盖测试类或模拟测试另一个类的方法。

对于私有方法,这不是一个问题,所以我的观点是:如果它可以是静态的,那么使它是静态的--这是一种有用的自动文档(“这个方法根本不依赖于任何实例状态”)。您不应该重写助手方法,这样就可以实现静态访问(例如,用输入参数替换字段访问),但是如果这是它的自然形式,那么就没有什么害处和一点好处了。

票数 6
EN

Software Engineering用户

发布于 2015-07-23 08:09:34

要回答这个问题,我们应该澄清静态静态的定义:

静态方法意味着与类的所有实例相关,而不是与任何特定实例相关。它们在这个意义上类似于静态变量。一个示例是一个静态方法,用于对一个类的实例的所有变量的值进行求和。例如,如果有一个products,它可能有一个静态方法来计算所有产品的平均价格。

任何静态方法都可以成为非静态方法,因此,如果是静态方法,就会声明调用这样一个方法会对您的实例产生什么样的影响,也就是说,除非您将上述实例传递给静态方法(这样就违背了静态方法的目的)。

这个方法没有状态可以正确地完成它的工作,并且可以引用任何实例,所以我会说是的,您应该使它是静态的。但是,一定要将它也保留为私有的,因为它只是在类的上下文中才有意义的方法,在这种情况发生改变之前,它应该保持私有。

如果您发现自己有几个这样的私有静态助手方法,那么您应该考虑创建一个最后一个类,其中的私有构造函数只包含受保护的静态方法,这些方法只能由包中的类调用。

我希望这能回答你的问题。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/290572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档