Должны ли частные вспомогательные методы быть статическими, если они могут быть статическими - PullRequest
192 голосов
/ 12 февраля 2009

Допустим, у меня есть класс, предназначенный для создания экземпляра. У меня есть несколько частных «вспомогательных» методов внутри класса, которые не требуют доступа ни к одному из членов класса и работают исключительно с их аргументами, возвращая результат.

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 в качестве статических методов - или по какой-то конкретной причине нет?

Конечно, проще всего оставить их нестатичными, даже если они могут быть статичными, не вызывая каких-либо проблем.

Ответы [ 21 ]

0 голосов
/ 12 февраля 2009

Я бы объявил их статическими, чтобы пометить их как не имеющие состояния.

В Java нет лучшего механизма для незначительных операций, которые не экспортируются, поэтому я думаю, что приватная статика приемлема.

...