![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
ПОВТОРЯЮ: а какая нам разница, что это такое??? Раз класс предоставил нам доступ к этому, значит мы можем этим пользоваться. Если же мы правим сам класс, то что мешает щёлкнуть правой кнопкой и выбрать Go to definition ![]() Это сообщение отредактировал(а) Дрон - 21.6.2005, 18:54 -------------------- Да. Именно так. |
|||
|
||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
С точки зрения кодера: да, ты прав, кодеру все равно. А я говорю о ДИЗАЙНЕ ЯЗЫКА. Посмотри на это с такой точки зрения. Если я смотрю код Васи Пупкина и вижу а.с то я не знаю, что это. Если это ошибка, и Вася Пупкин создал паблик поле, то это плохо. -------------------- |
|||
|
||||
arilou |
|
||||||||||||||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
1) http://forum.vingrad.ru/index.php?showtopi...ndpost&p=447783
и свойства.
Это не пример. Как и это:
Не знаешь указателей, будешь плодить маразм. Не знаешь, когда и как применять свойства?
Это официальная информация.
Использовать неинициализированные указатели тоже ничто не препятствует. Это не аргумент.
Да, они реализованы как методы. Но выглядят как поля. Но ими не являются
Вариант Б: есть четкая разница между свойствами объекта, и его операциями - облегчение понимания. |
||||||||||||||||||
|
|||||||||||||||||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Domestic Cat
ОК. Принято ![]() Позволю себе немного нехороший ход... А если тов. Пупкин создал такое:
То это хорошо? ![]() ЗЫ: Кстати Visual Studio в выпадающих списках различает поля и свойства. -------------------- Да. Именно так. |
|||
|
||||
Domestic Cat |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
В прочтенных мной книгах я не помню, чтобы это упоминалось Разве что Троелсен. Но ведь продолжение такое: данное правило не сработает во многих случаях. Я приводил пример свойства Size. Я приводил пример свойства Exists.
То же самое можно сказать и о get/set методах. Они тоже проводят границу между своиствами и действиями, но отличие в том, что нет жесткого разграничения синтаксиса.
Из твоих слов определить что должно быть своством, а что методом нельзя, разве ты не видишь?
![]() Да, это хорошо, гораздо лучше чем puvlic int field. Именно это и есть ООП. Не понимаю почему это плохой код. -------------------- |
||||||||||||
|
|||||||||||||
arilou |
|
||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Почему ты считаешь, что использование того или иного свойства языка должно быть четко формализовано? У нас была написана программа на C++, которая в целях усложнения взлома результаты функций возвращала через exceptions. Но никто же не предпологал, когда их проектировали, что они будут так использоваться!
Я приводил пример с указателями. Но ведь никто не говорит, что указатели - это плохо.
Я бы сказал, что это хорошо, но лучше было бы свойством - ведь все что делается - это меняется значение private поля. Я считаю, что все зависит от культуры программирования. У меня в команде, слава Богу, никто не пишет идиотских свойств. |
||||||
|
|||||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
А я как-то и не вижу разницы с public int field; кроме как в ухудшении быстродействия ![]() Если серьёзно, то мне кажется, что Domestic Cat слишком увлекается теорией ООП как таковой. Конечно, я в обычных условия никогда не сделаю паблик переменную... Но когда я вижу такие методы из одного присваивания или ретурна, то меня просто плющит ![]() Это сообщение отредактировал(а) Дрон - 21.6.2005, 19:29 -------------------- Да. Именно так. |
|||
|
||||
AntonSaburov |
|
||||||||||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Предоставил программист. И даже в Майкрософт (гдена самом деле пишут очень приличный код и там отнюдь не дураки работают) делает иногда странные вещи. Что говорить о системах, которые сделаны для заказчика, нет толком документации, нет даже описания или оно сделано для системы двухлетней давности. И вот разбирая 218-ую функцию мы видим надпись
Ну и что вы будете делать ? Правильно - пойдете и будете смотреть - это свойство или паблик поле. Неоднозначность есть ? Очевидно, что есть. А в случае
Вы будете уверены в том, что это реально вызывается функция. Поначалу мне проперти в delphi казались очень удобными. Было даже приятно сделать
Потом оказалось, что гораздо понятнее сделать DataSet.Open. А DataSet.Active использовать только для проверки. Но вызов мало чем отличается от DataSet.IsActive() (гипотетический вызов). Может для кого-то этот пример является удобством, но для меня - однозначно нет. Лишнее дублирование, проперти ReadOnly - это без особых хлопот заменяется вызовом методов. Мало того - в том же Delphi описание проперти сделано вообщем-то корявенько. В .NET уже приличнее. Язык должен быть не только удобным, но и должен быть все-таки с достаточной мере ЛАКОНИЧНЫМ. А введение пропертей (во всяком случае в C#) выглядит еще одной мулечкой, которую вообщем-то можно было бы убрать без особых хлопот. Добавлено @ 19:38
Может приведем код для проперти ?
Здесь что-то по-другому ? |
||||||||||||
|
|||||||||||||
Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Managed язык, претендующий на простоту обязан быть четко формализован. Свобода С++ как раз и делает его сложным языком, не говоря уже о том, что при вольном написании кода можно создать кучу багов и сделать его нечитаемым. Но в случае с С/С++ этооправдано, т.к. это также и "низкоуровневый" язык.
Вообще говоря, их потому и убрали из Java и почти убрали из С# - потому что это не нужно для решаемых этими языками задач, а следовательно плохо.
Ухудшение это мизерное. Зато это ОО код. Если завтра придется менять реализацию, убирать поле field, и вместо этого обращаться к БД, то тебе придется перелопатить сотню классов, чтобы обнаружить, кто и где вздумал написать myClass.field и заменить все эти вызовы на вызов метода, поскольку field перестало быть полем а стало чето-то делать. -------------------- |
||||||
|
|||||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
А как бы тогда работал компонент PropertyGrid? Активно используемый в самой студии. -------------------- Да. Именно так. |
|||
|
||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Да, давайте уберем свойства и делегаты с событиями, и получим очередной клон Java, который реально ничего лучше не делает, да? Тогда пуристы будут спать спокойно. Я рад, что никто пока не предложил делать public поля. Это хорошо, что спор идет вокруг свойств и методов. С таким же успехом можно на ассемблере писать. Хотя нет. Там же куча взаиозаменяемых команд. Тогда на перфокартах. Извините за цинизм, но вы сами к этому подвели. Давайте вспомним такой язык как Лого. Или еще! Зачем нам рекурсия, ведь в Прологе без нее отлично обходятся?! Вырежем рекурсию.
Откроем Intellisense и увидим, что это свойство. Нету VS.NET? В SharpDevelop Intellisense тоже есть. Другие среды для .NET я не видел. А если в блокноте? ![]() |
||||
|
|||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Тогда я возьму и сделаю свойство field !!! И интерфейс класса не изменится ![]() -------------------- Да. Именно так. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ха! Заменяем на свойство, и можно даже по коду не лазить - имя то не изменилось. |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Во, всплыло одно реально положительное свойство - можно легче использовать это все в визуальном редакторе.
Для JavaBeans необходимо использовать определенне соглашения по именованию. Для пропертей в том виде, в котором они используются в .NET это сделать проще. Нагляднее и более жестко. Там особо не забалуешь. Есть сеттер и геттер. И никаких особых шагов в сторону не сделаешь. Вот это занятная мысль для меня ![]() |
|||
|
||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Вы невнимательно читали. Вам в 99% случаев придется менять название на более подходящее или вообще менять на вызов метода (следуя вашему же правилу использования пропертей). Да и не об этом речь. -------------------- |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |