Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Для чего нужны модификаторы доступа? 
:(
    Опции темы
502
Дата 10.11.2011, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Я всегда прав
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 16.7.2011

Репутация: нет
Всего: 4



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

Это сообщение отредактировал(а) 502 - 10.11.2011, 13:20
PM MAIL   Вверх
LSD
Дата 10.11.2011, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



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

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
502
Дата 10.11.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Я всегда прав
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 16.7.2011

Репутация: нет
Всего: 4



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

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

int param = { get; set; };



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

и почему тут методы не могут быть публичными?
PM MAIL   Вверх
LSD
Дата 10.11.2011, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



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

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



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

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
502
Дата 10.11.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Я всегда прав
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 16.7.2011

Репутация: нет
Всего: 4



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

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

PM MAIL   Вверх
LSD
Дата 10.11.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



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

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
rodnover
Дата 11.11.2011, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: нет
Всего: 10



Обычное разграничение доступа. Как в том же газпроме. Максимум, что пользователи знают - это как платить за газ (public), филиалы газпрома основополагаются на описанные методы главного офиса (protected), но все остальные о них ничего не знают. А уж в главном офисе используют свои внутренние процедуры, о которых даже филиалам не говорят (private). Можно и без этого, но зачем? Всему свое место.
PM MAIL   Вверх
k0rvin
Дата 11.11.2011, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



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

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


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.