相关疑难解决方法(0)

如果私有帮助方法可以是静态的,那么它们应该是静态的

假设我有一个旨在实例化的类.我在类中有几个私有的"帮助器"方法,它们不需要访问任何类成员,并且只对它们的参数进行操作,返回结果.

public class Example {
   private Something member;

   public double compute() {
       double total = 0;
       total += computeOne(member);
       total += computeMore(member);
       return total;         
   }

   private double computeOne(Something arg) { ... }
   private double computeMore(Something arg) {... } 
} 
Run Code Online (Sandbox Code Playgroud)

有没有特别的理由指定computeOnecomputeMore作为静态方法 - 或任何特殊原因不?

将它们保持为非静态是最容易的,即使它们肯定是静态的而不会引起任何问题.

java methods static static-methods

197
推荐指数
10
解决办法
8万
查看次数

使用私有静态方法

您如何看待使用私有静态方法

就个人而言,我更喜欢使用静态私有方法来进行非静态,只要它不需要访问任何实例字段.

但我听说这种做法违反了OOP原则.

编辑:我想从风格的角度来看,而不是表现.

java oop static-methods coding-style

37
推荐指数
2
解决办法
5万
查看次数

在什么情况下静态方法是一个好习惯?

我看过以下讨论:

如果私有辅助方法可以是静态的,那么它们应该是静态的吗?如果它们的类没有成员变量,
那么所有方法都应该是静态的

似乎人们通常会接受静态方法,但对此有点怀疑,原因如下:

  1. 他们很难测试.
  2. 他们违反了OO原则.(一个人说,它们是功能,而不是方法.)

最可接受的静态方法是私有静态方法.但那么为什么存在静态方法,在什么情况下它们是首先被采用的?

java methods static

37
推荐指数
4
解决办法
2万
查看次数

方法何时应该是静态的?

另外,静态方法比实例方法有任何性能优势吗?

我最近遇到了以下内容:http://www.cafeaulait.org/course/week4/22.html:

方法何时应该是静态的?

  1. 既不读取也不写入实例字段
  2. 独立于对象的状态
  3. 接受参数的数学方法,将算法应用于这些参数,并返回值
  4. 用于代替构造函数的工厂方法

我对Stack Overflow社区的反馈非常感兴趣.

language-agnostic static

33
推荐指数
3
解决办法
1万
查看次数

如果它们的类没有成员变量,那么所有方法都应该是静态的

我和我合作过的人发生过争吵,这真的让我烦恼.如果你有一个只有calculateRiskor或和方法calculatePrice的类,那么这个类是不可变的并且没有成员变量,那么这些方法应该是静态的,这样就不必每次都创建一个类的实例.我使用以下示例:

public class CalcService {
  public int calcPrice(Trade trade, Date date) {
    ...
  }
  public double calcRisk(Trade trace, Date date) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

这些方法应该是static吗?

java static

31
推荐指数
5
解决办法
4304
查看次数