Член класса или параметр конструктора?
От: Muxa  
Дата: 08.07.09 11:57
Оценка:
не уверен что есть разница, и я ее понимаю, но все же что лучше использовать в данном случае (см. коммент в коде)?
(на примере C#)

class Base {
 protected B _b;

 protected Base(B b){
  _b = b;
 }
}

class Derived {
 private A _a1;
 private A _a2;

 public Derived(B b) : base(b) {
// создать объект типа A используя параметр конструктора
  _a1 = b.CreateA();
// или создать объект типа A используя член класса
  _a2 = _b.CreateA();
 }
}
Re: Член класса или параметр конструктора?
От: GlebZ Россия  
Дата: 08.07.09 12:07
Оценка: +1
Здравствуйте, Muxa, Вы писали:

M>не уверен что есть разница, и я ее понимаю, но все же что лучше использовать в данном случае (см. коммент в коде)?

M>(на примере C#)
Открытый доступ к мемберам даже наследуемого класса — по мне не очень. Даже совсем не очень. Как и само подобное наследование. Хотя все зависит от логики заложенной там.
Re: Член класса или параметр конструктора?
От: ZevS Россия  
Дата: 08.07.09 15:12
Оценка: 5 (2)
Здравствуйте, Muxa, Вы писали:

По мне так использование параметра лучше — мы явно показываем что делаем и что для этого используем. При использовании члена предка мы делаем предположение что конструктор базового класса инициализирует этот самый член. А это может делать вовсе не он, а его предок, и член может быть вовсе не типа B, а типа его предка... И даже если мы сами разрабатываем оба класса и на 100% знаем что они делают, все может поменяться при рефакторинге базового класса через полгода. Подытоживая, чем меньше предположений и неявности — тем лучше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.