当前位置: 首页 > 面试题库 >

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

宋伯寅
2023-03-14
问题内容

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

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) {... } 
} 

有没有指定任何特别的原因computeOne,并computeMore为静态方法-或任何特别的理由不?

将它们设置为非静态无疑是最容易的,即使它们可以肯定是静态的而不会引起任何问题。


问题答案:

我更喜欢这样的帮助方法private static; 这将使读者清楚地知道他们不会修改对象的状态。我的IDE还将以斜体显​​示对静态方法的调用,因此我将无需看签名就知道该方法是静态的。



 类似资料:
  • 这将打印a.a=50 但是,如果我将更改为,那么我可以如何访问该变量呢?

  • 问题内容: 我刚刚在一些我未编写的代码中发现了一个错误,我对此感到有些惊讶: 尽管该代码在输入数据上失败了很多 _(因为它试图以17.01.2011格式查找日期并返回诸如10396/2011之类的东西,然后由于无法解析日期而崩溃,但这 确实是错误 的)这个问题的重点;)_我想知道: Pattern.compile 的要点之一不是要进行速度优化(通过预编译正则表达式)? 难道不是所有的“静态”模式都

  • 问题内容: 是否应该将记录器声明为静态?通常,我已经看到记录器的两种类型的声明: 要么 应该使用哪一个?两者的优缺点是什么? 问题答案: 非静态形式的优点是,您可以像下面的(抽象)基类中声明它,而不必担心会使用正确的类名: 但是,其缺点显然是将为该类的每个实例创建一个全新的记录器实例。这本身可能并不昂贵,但会增加大量开销。如果您想避免这种情况,请改用表格。但是它的缺点是,您必须在每个单独的类中声明

  • 问题内容: 我在想,如果您有一个静态方法 不 同步,但并 没有 修改任何静态变量是线程安全的?如果该方法在其中创建局部变量该怎么办?例如,以下代码是线程安全的吗? 因此,如果我有两个线程连续且同时调用此方法,一个带狗(例如“大丹狗”和“斗牛犬”),另一个带猫(例如“波斯”和“暹罗”)的猫,我将得到猫和狗在同一阵列中?还是猫和狗永远不会同时处于该方法的同一调用中? 问题答案: 此方法是100%线程安

  • 问题内容: 我正在尝试在计算机上运行以下代码,但是它没有执行任何操作,也没有显示任何错误。 有人可以帮帮我吗?顺便说一句,我正在使用Java 7。 问题答案: 如果将-放在-block 的末尾,它将在Java 6及更低版本中正确运行(没有有效的!)。这是因为该块是 在搜索有效方法 之前 执行的,因此,如果您在静态块的末尾退出程序,则不会收到任何错误。 但是, 此行为在Java 7中已更改。现在,您

  • 我正在使用存储库模式并尝试建立模型之间的关系。当我尝试运行存储()方法(在控制器中),该方法试图使用用户()方法(与方模型建立关系)时,我收到以下错误消息: 非静态方法不应该静态调用::user(),假设$this来自不兼容的上下文 我不明白为什么在尝试运行user()relationship方法时会出现此错误,但所有其他方法(包括$this- 以下是相关代码: