Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Стиль программирования: Методы vs. Свойства

241
08 ноября 2008 года
Sanila_san
1.6K / / 07.06.2005
Сабдж. Вопрос такой: с точки зрения хорошего стиля лучше использовать методы для доступа к переменным класса, или свойства? Рихтер советует везде использовать методы, но мне кажется, что иногда короче сделать свойства.
63
08 ноября 2008 года
Zorkus
2.6K / / 04.11.2006
У меня одного острое чувство дежа-вю?
241
08 ноября 2008 года
Sanila_san
1.6K / / 07.06.2005
;) Тут весь прикол в опросе. :)
3.7K
08 ноября 2008 года
0nni
326 / / 24.06.2008
Использую методы только в случае когда нужно ReadOnly поле или нужна реакция объекта на изменение, в остальных делаю Public свойства.
5
08 ноября 2008 года
hardcase
4.5K / / 09.08.2005
Использовать однозначно методы - по определению хреновый стиль, во всяком случае в C#.
5
08 ноября 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: 0nni
Использую методы только в случае когда нужно ReadOnly поле.

Эмм а то, что свойство может быть только на чтение, как бы нее?

3.7K
08 ноября 2008 года
0nni
326 / / 24.06.2008
Цитата: hardcase
Эмм а то, что свойство может быть только на чтение, как бы нее?


Кажется опять глупость сказал :D. В общем от ситуации зависит.

241
08 ноября 2008 года
Sanila_san
1.6K / / 07.06.2005
Цитата:
В общем от ситуации зависит.

Ну как сказать. Стиль как раз от ситуации не зависит. Он или препятствует возникновению ошибок - тогда это хороший стиль, или не препятствует - и тогда он уже не столь хорош.

3.7K
08 ноября 2008 года
0nni
326 / / 24.06.2008
Значит у меня "грязный" стиль.
1.9K
09 ноября 2008 года
GreenRiver
451 / / 20.07.2008
Проголосовал, а потом подумал... Жаль нельзя переголосовать :)
Думаю, что от ситуации зависит, если нужно подчеркнуть, что происходит действие, то лучше метод.
А если важно само значение, а действия происходящие при чтении/записи должны быть скрыты в рамках логики класса, то свойство.

P.S. У меня тоже было дежа-вю :)
87
09 ноября 2008 года
Kogrom
2.7K / / 02.02.2008
Без всякой логики, просто для порядка я делаю так: если класс простой и используется в основном одним более крупным классом, то называю маленький класс struct и делаю все его свойства открытыми.

В других случаях стараюсь использовать методы. На этапе разработки иногда пользуюсь свойствами - так быстрее. Перед выпуском заменяю методами, для надежности.
274
09 ноября 2008 года
Lone Wolf
1.3K / / 26.11.2006
Все зависит от назначения свойства. Если свойство часто будет тягатся и постоянно нужно в каких-то других операциях, то лучше public. Если же свйостов закрытое и исключительно для потребностей класса, то либо его вобще закрыть на чтение, или только по методам.
288
10 ноября 2008 года
nikitozz
1.2K / / 09.03.2007
Холивар продолжается :)

У меня зависит от того на чем пишу. Если C#, использую свойства, т.к. это часть языка, если C++ - обхожусь методами, хотя иногда запись и длинее.
341
10 ноября 2008 года
Der Meister
874 / / 21.12.2007
Цитата: hardcase
Использовать однозначно методы - по определению хреновый стиль, во всяком случае в C#.


С точки зрения языка - без разницы. Просто если не использовать свойства, то, скорее всего, код не будет вписываться в концепцию взаимодействия, положенную в основу FCL, где почти исключительно через свойства реализуются:
- ассоциации между классами,
- агрегация,
- композиция,
открывая, тем самым, детали реализации взаимосвязей между объектами и их структуры. Вместо зависимости от одного объекта, получаем зависимость от двух и более. Согласно закону (или принципу, не помню уже) Деметра, такая архитектура влечёт за собой сложности определения мест, подверженных изменению при модификации какого-либо компонента решения. Некоторые признанные мэтры программирования утверждают, что подход FCL, ранее являвшийся подходом COM, узаимствованным, в свою очередь, со стандартных библиотек Java, выглядит практичным для решений малой сложности и объёма, но для крупного проекта может стать серьёзной ошибкой в ответе на вопрос о выборе механизма взаимодействия объектов. В классическом, продвигаемом товарищами Баддом, Беком, Рыловым и многими другими деятелями ООП (я называю его "черезжопном") подходе к дизайну ооп-решений, логика работы почти противоположна разумной. Например, если при "FCL-подходе" необходимо оформить заказ на некоторый товар, то выглядеть это будет так: ответственному за заказы предлагают новый заказ, он его рассматривает, проверяет доступность товара по каждому пункту, и если все указанные в заказе товары имеются в необходимом количестве, то проводит его по установленным "свыше" правилам. А при классическом подходе примерно так: заказ заставляет каждый из своих пунктов заставлять резервироваться ообозначенный в этом пункте товар. Заметьте, открытые свойства, при таком подходе, вообще не нужны (по крайней мере в этой части задачи). Я не являюсь сторонником ни того, ни другого стиля построения взаимодействия, больше предпочитая гибридные и комбинированные подходы, поэтому ни "за" своё ни "против" открытых свойств не скажу. Стиль будет хорошим в зависимости от того, насколько хорошо вы умеете в этом стиле работать.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог