2015-08-20 2 views
1

Итак, скажем, у нас есть этот класс игроков.Каков правильный способ инициализации объектов?

Что лучше это сделать:

public class Player 
{ 
    public Vector2 position = new Vector2(); 

    public Player() 
    {} 
} 

или это:

public class Player 
{ 
    public Vector2 position; 

    public Player() 
    { 
     position = new Vector2(); 
    } 
} 

Или это не имеет значения? Мне нравится делать первый путь, потому что код будет более понятным, тогда

+0

Область влияния переменных и памяти будет затронута, doea не повлияет на мелкомасштабный проект, но да, имеют эффект на большие масштабы. – MarmiK

+0

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

+0

@MarmiK - Зачем влиять область видимости или объем памяти? Для обоих методов это должно быть одинаковым. – monkeyhybrid

ответ

4

Первый способ лучше, если position может быть создан без ссылки на любые аргументы, переданные в конструктор. Это верно в данном конкретном случае.

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

+0

Стоит прочитать этот ответ по аналогичному вопросу: http://stackoverflow.com/a/24558/1467680 – monkeyhybrid

0

Назначение инициализирующего положения внутри конструктора - это когда вам нужно присвоить ему значение.

Пример

public class Player 
    { 
      public Vector2 position; 

      public Player(Vector2 pos) 
      { 
        position = pos; 
      } 
    } 

Инициализация его внутри конструктора не имеет никакого значения, но бросает вызов цель этого.

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