方法可以做成静态,但应该吗?

不问归期 提交于 2020-02-27 21:17:50

Resharper喜欢指出每个asp.net页面可以静态化的多个函数。 如果我让它们静止,对我有帮助吗? 我应该将它们设置为静态并将它们移动到实用程序类吗?


#1楼

这很有趣:

http://thecuttingledge.com/?p=57

ReSharper实际上并不建议你让你的方法保持静态。 你应该问问自己为什么那个方法在那个类中,而不是比如在其签名中出现的一个类...

但是这里是resharper documentaion所说的: http//confluence.jetbrains.net/display/ReSharper/Member+can+be+made+static


#2楼

只是为了添加@Jason True的答案 ,重要的是要认识到只在方法上加上'static'并不能保证该方法是'纯'的。 对于声明它的类,它将是无状态的,但它可能会访问具有状态(应用程序配置等)的其他“静态”对象,这可能并不总是坏事,但其中一个原因是我个人倾向于喜欢静态方法,如果它们是纯粹的,你可以单独测试和推理它们,而不必担心周围的状态。


#3楼

对于类中的复杂逻辑,我发现私有静态方法在创建隔离逻辑时非常有用,其中实例输入在方法签名中明确定义,并且不会发生实例副作用。 所有输出必须通过返回值或out / ref参数。 将复杂的逻辑分解为无副作用的代码块可以提高代码的可读性和开发团队对它的信心。

另一方面,它可能导致被实用方法的扩散污染的类。 像往常一样,团队编码约定的逻辑命名,文档和一致应用可以缓解这种情况。


#4楼

它有助于控制命名空间污染。


#5楼

您应该在给定方案中执行最具可读性和直观性的操作。

性能参数不是一个好的,除非在最极端的情况下,因为实际发生的唯一事情是一个额外的参数( this )被推入堆栈,例如方法。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!