public Attributes vs getters && setters vs properties
От: R1K0 Россия  
Дата: 22.07.09 09:17
Оценка:
Всем привет.
Сейчас вот сижу проектирую очередную прогу после недавнего прочтения Code Complete. В принципе это далеко не первая книга, в которой рекомендуют не делать так:

class cClass
{
  public:
    int numOfSmthng;  // вот такой public доступ к переменной
};


а делать это таким образом:

class cClass
{
  public:
    int  GetNumOfSmthng() const;
    vodi SetNumOfSmthng(int newValue);

  private:
    int numOfSmthng;
};


Так в чём же правда?

Ведь в данном и миллионе подобных случаев это означает тоже самое. Можно даже организовать доступ к атрибуту а-ля свойству (привет Delphi):

class cClass
{
  public:
    int & NumOfSmthng() { return numOfSmthng; }

  private:
    int numOfSmthng;
};


И никаких проблем.

Может кто-то что-то выскажет по этому поводу. Потому как реально никаких убедительных доводов против открытых атрибутов ни в одной книге не нашел.
Как вариант можно вспомнить struct. Конечно все станут кричать, что это, мол, другое дело. Но если абстрагироваться от рассуждений относительно struct vs class, то все-таки — почему все против public'a??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.