приватный статический метод в классе плюсы и минусы? - PullRequest
4 голосов
/ 10 августа 2011

Иногда при написании класса вам понадобятся вспомогательные методы, которые позаботятся о некоторых простых вещах (изменить строку определенным образом или выполнить несколько простых вычислений).

Если вспомогательные функции достаточно малы (и не нужны ни одному другому классу), имеет смысл написать вспомогательный метод в этом классе.

Теперь: если вам не нужен доступ к каким-либо переменным-членам, лучше сделать этот метод private или private static

следующий пример: просто реализует метод, который проверяет, не является ли строка null и содержит foo.

public class SomeClass

...

 public void calculate(String inputString) {
  ...
  boolean foo = getFoo(inputString);
 }

 private (static) boolean getFoo(String inputString) {
  return inputString != null && inputString.contains("foo");
 }

}

Есть ли плюсы и минусы в том, чтобы сделать метод статичным или нестатичным. Есть ли вообще делать и не делать?

Ответы [ 2 ]

12 голосов
/ 10 августа 2011

Я бы лично сделал метод статичным - стало бы понятнее, что он не не зависит от состояния объекта.Это может иметь эффект зацепки с точки зрения безопасности потока (хотя, если бы он имел доступ к статическим членам типа, вам следует быть осторожным с этим).

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

Вы всегда можете сделать это нестатичным позже - я думаю единственный побочный эффектиз этого было бы потенциально изменить идентификатор сериализации.(Бинарная сериализация - такая боль.)

2 голосов
/ 10 августа 2011

Сделайте его нестатичным, если ему нужен доступ к нестатическим переменным-членам, и сделайте его статическим, если это не так.

...