2012-03-21 2 views
0

Стилистически лучше инициализировать поля Java в конструкторе или в точке, где объявлено поле? Например:Инициализация полей inline или внутри конструктора

public class Foo { 
    private final List<String> l; 

    public Foo() { 
    this.l = new LinkedList<String>(); 
    } 
} 

... или

public class Foo { 
    private final List<String> l = new LinkedList<String>(); 
} 

Я обычно выступает бывший, как это казалось ясным. Однако последнее, очевидно, приводит к более компактному коду.

+0

Возможный дубликат [Лучшая практика: инициализировать поля класса в конструкторе или в объявлении?] (Http://stackoverflow.com/questions/24551/best-practice-initialize-class-fields-in-constructor-or-at -declaration) –

+0

Бывший хорошо для меня, потому что ваш список инициализируется только тогда, когда ваш объект создан. – sgowd

+0

Так же как и во втором случае. – aioobe

ответ

4

Мое эмпирическое правило:

Положите его в точке декларации, если

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

В противном случае поставьте его в конструкторе.

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

1

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

Смежные вопросы