Закрытие полей в классах - в чем удобство?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Закрытие полей в классах - в чем удобство? - 2005-09-13 22:39:33
|
|
|
Grunge
Сообщений: 1
Оценки: 0
Присоединился: 2005-09-13 22:23:21
|
Вопросо такой: почему рекомендуется делать поля private даже если в программе только один класс и работает только один разработчик? Собственно в чем удобство?
|
|
|
Закрытие полей в классах - в чем удобство? - 2005-09-13 22:49:02
|
|
|
Great
Сообщений: 1046
Оценки: 0
Присоединился: 2005-08-11 19:41:36
|
поскольку язык не указан, буду считать С++. Итак, это удобно, .т.к. мы абстрагируем работу с полем от программы. Т.е. допустим, есть два варианта: class one { private: int var; public: one(int _v){var=_v;} int GetVar(){return var;} };
class other { public: int var; };
Если допустим мы случайно напишем one obj; other obj2; obj2.var=0; то изменится значемние переменной - а мы не хотели (допустим, просто очепятка) В случае obj.GetVar() компилер нам просто запретит
|
|
|
Закрытие полей в классах - в чем удобство? - 2005-09-15 13:44:37
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
я думаю тут две причины: 1. ООП сдвиг в головах авторов таких заявлений (крайне сложно лечится) 2. ибо нефик. чтобы когда тебе приспичит отслеживать каждое обращение к этой переменной (например, потому, что программа оказалась на порядок сложнее чем казалась в начале), не пришлось искать по всей программе, где же эти обращения происходят.
а вообще нужно опыта до фига, чтобы предсказывать какую переменную можно оставить public, чтобы не писать методы set_var и get_var, а какую сделать private. И тут напрашиваеться третья причина, таких заявлений: 3) пока опыта нету, пиши private
|
|
|
Закрытие полей в классах - в чем удобство? - 2005-09-16 08:32:40
|
|
|
Kill_em_all
Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
|
И то верно! Чтоб ты сам не напортачил с написанием какой-либо функции и случайно не изменил значение переменной когда не надо и не ломал бы себе голову при отладке и тестировании проги.
А вообще приказы не обсуждаются:))Просто возьми себе за правило ставить в приват все переменные-мемберы класса
|
|
|
|
|