Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Для чего нужны модификаторы доступа?


Автор: 502 10.11.2011, 13:17
Ну вот для чего, почему не сделать так: все свойства private, все методы public?

Автор: LSD 10.11.2011, 13:42
Без приватных методов тяжело писать простой и читаемый код. Насчет полей - можно обойтись и без публичных, но иногда они бывают удобны.

Пример:есть некий метод который проводит вычисления и возвращает результат. Вычисления достаточно сложные и валидация входных параметров тоже. По хорошему тут надо сделать 2 метода: один проверяет входные параметры, второй делает вычисления.

Автор: 502 10.11.2011, 14:55
Цитата(LSD @  10.11.2011,  13:42 Найти цитируемый пост)
Насчет полей - можно обойтись и без публичных, но иногда они бывают удобны.

есть сеттеры/геттеры
Код

int param = { get; set; };



Цитата(LSD @  10.11.2011,  13:42 Найти цитируемый пост)
Пример:есть некий метод который проводит вычисления и возвращает результат. Вычисления достаточно сложные и валидация входных параметров тоже. По хорошему тут надо сделать 2 метода: один проверяет входные параметры, второй делает вычисления.

и почему тут методы не могут быть публичными?

Автор: LSD 10.11.2011, 15:24
Цитата(502 @  10.11.2011,  15:55 Найти цитируемый пост)
есть сеттеры/геттеры

Не все языки поддерживают проперти. Публичные константы удобней и проще, чем публичные аксесоры. Если нужно реализовать простой DTO по типу структуры, то простые публичные свойства проще и без лишнего оверхеда.
(это не значит, что "нельзя обойтись без", это значит что в данном конкретном случае удобней/проще использовать)



Цитата(502 @  10.11.2011,  15:55 Найти цитируемый пост)
и почему тут методы не могут быть публичными?

Вызов метода выполняющего вычисления с неправильными входными параметрами может привести объект в неконсистеное состояние.

Автор: 502 10.11.2011, 16:24
Цитата(LSD @  10.11.2011,  15:24 Найти цитируемый пост)
Вызов метода выполняющего вычисления с неправильными входными параметрами может привести объект в неконсистеное состояние. 

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

Автор: LSD 10.11.2011, 16:45
Цитата(502 @  10.11.2011,  17:24 Найти цитируемый пост)
ну, это уже проблемма программиста что он не проверяет данные
+ если второй метод некорректно работает без первого, то второй сам должен вызвать первый

Перечитай внимательно, то что я написал.

Автор: rodnover 11.11.2011, 08:14
Обычное разграничение доступа. Как в том же газпроме. Максимум, что пользователи знают - это как платить за газ (public), филиалы газпрома основополагаются на описанные методы главного офиса (protected), но все остальные о них ничего не знают. А уж в главном офисе используют свои внутренние процедуры, о которых даже филиалам не говорят (private). Можно и без этого, но зачем? Всему свое место.

Автор: k0rvin 11.11.2011, 20:50
Цитата(502 @ 10.11.2011,  13:17)
Ну вот для чего, почему не сделать так: все свойства private, все методы public?

насколько я знаю, в SmallTalk так и есть

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)