Должен ли я сохранять переменные экземпляра в Java всегда инициализированными или нет? - PullRequest
5 голосов
/ 13 февраля 2009

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

public class ItemManager {

  ItemMaster itemMaster;
  List<ItemComponentManager> components;

  ItemManager() {
    itemMaster = new ItemMaster();
    components = new ArrayList<ItemComponentManager>();
  }

  ...
}

Смысл в основном состоит в том, чтобы избежать утомительной проверки на null перед использованием переменной экземпляра где-нибудь в коде. Пока что это работает хорошо, и вам, в основном, не нужно значение null , так как вы также можете проверить наличие пустой строки или пустого списка и т. Д. Я не использую этот подход для переменных в области метода как область действия очень ограничена и поэтому не влияет на другие части кода.

Это все вроде эксперимента, поэтому я хотел бы знать, может ли этот подход сработать или есть какие-то подводные камни, которых я пока не вижу. Как правило, рекомендуется инициализировать переменные экземпляра?

Ответы [ 12 ]

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

Если это весь ваш код, и вы хотите установить это соглашение, это должно быть приятно. Я согласен с комментарием Пола, что ничто не мешает некоторому ошибочному коду случайно установить одну из переменных вашего класса в нуль. Как правило, я всегда проверяю на ноль. Да, это PITA, но защитное кодирование может быть хорошей вещью.

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

Что произойдет, если в одном из ваших методов вы установите

itemMaster = null; 

или вы возвращаете ссылку на ItemManager другому классу, и он устанавливает itemMaster в значение null. (Вы можете избежать этого, легко вернуть клон вашего ItemManager и т. Д.)

Я бы сохранил чеки, так как это возможно.

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