Статические классы / поля. Как часто вы используете это? - PullRequest
4 голосов
/ 09 февраля 2012

Иногда очень сложно найти ошибку в приложении из-за статических данных. Хорошо ли использовать статические данные в ООП или лучше их избегать? Заранее спасибо.

UPDATE:

Как часто вы используете статические классы и для каких целей?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Вообще говоря, static методы приводят к коду, который трудно протестировать, начиная с

  • мы не можем знать, изменил ли какой-либо другой класс возможное состояние,
  • мы не можем легко высмеивать или отключать статическую реализацию.

Есть несколько допустимых вариантов использования.

  • Для реализации шаблона Singleton
  • Для обеспечения логики построения (например, именованные фабричные методы), такие как

Я бы обычно воздерживался от использования static методов и допустил бы принцип по умолчанию, согласно которому существование любого static контента должно быть мотивировано.

Как указывает @Louis, переменные static полезны для предоставления констант для одного экземпляра. Обычно это также может применяться к переменным-членам, содержащим объекты, такие как Logger.

1 голос
/ 09 февраля 2012

Статика не должна использоваться чрезмерно, но в некоторых ситуациях она стоит, вы должны использовать статические методы для предоставления фабричных методов или вспомогательных методов, которые не имеют прямого отношения к объекту экземпляра.

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

Как и в большинстве ситуаций нет абсолютного ответа на ваш вопрос (избегать или не использовать статические), это зависит от контекста , однако вы не должны злоупотреблятьстатических ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...