一尘不染

将方法声明为静态有什么好处

javascript

如果该方法可以声明为静态方法,则会向编译器发出警告。

[edit] Eclipse帮助中的确切引号,重点是私有和最终的:

启用后,编译器将为私有或最终方法(仅引用静态成员)发出错误或警告。

是的,我知道我可以将其关闭,但是我想知道打开它的原因吗?

为什么将每个方法都声明为静态是一件好事?

这会给性能带来任何好处吗?(在移动域中)

指出一种方法是静态的,我想表明您不使用任何实例变量,因此可以移至utils样式类吗?

在一天结束时,我应该只关闭“忽略”功能还是应该修复它给我的100多个警告?

您是否认为这只是多余的关键字而使代码变得肮脏,因为编译器还是会内联这些方法?(有点像您没有声明每个变量都可以终止但可以声明)。


阅读 501

收藏
2020-09-26

共1个答案

一尘不染

每当编写方法时,您都将在给定范围内履行合同。范围越窄,编写错误的机会就越小。

当方法是静态的时,您不能访问非静态成员。因此,您的范围更窄。因此,如果您不需要并且永远也不需要(甚至在子类中)非静态成员来履行您的合同,为什么要为您的方法提供对这些字段的访问权限?static在这种情况下声明该方法将使编译器检查您是否使用了不打算使用的成员。

而且,它将帮助阅读您的代码的人们了解合同的性质。

这就是为什么static在实际上实现静态协定时声明一个方法很好的原因。

在某些情况下,您的方法仅表示相对于类实例的某种含义,并且碰巧其实现实际上并未使用任何非静态字段或实例。在这种情况下,您不会标记方法static。

不使用static关键字的示例:

  • 一个扩展钩子,什么都不做(但是可以对子类中的实例数据做一些事情)
  • 一个非常简单的默认行为意味着可以在子类中进行自定义。
  • 事件处理程序的实现:实现会随事件处理程序的类而变化,但不会使用事件处理程序实例的任何属性。
2020-09-26