![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Ну вообщем-то по основным идеям .NET - это явный клон JAVA. Там одно гордое описание виртуальной машины и сборщика мусора с поколениями чего стоит. |
|||
|
||||
arilou |
|
||||||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Кем обязан? Есть спецификация языка C#:
Добавлено @ 19:51
Не попадайся на провокацию ![]() ![]() |
||||||||
|
|||||||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Можно к пылесосу и стиральную машину пределать. Только никому не надо. И можно сделать процессор, у которого будет 3000 команд. Только никому такое количество не нужно. Может кто-нибудь вспомнить "бритву Оккама" ? Что там написано ? В первоначальной форме это правило гласит: «Не пытайся объяснить посредством большего то, что можно объяснить посредством меньшего». Позже была предложена формулировка «Не следует умножать сущности без необходимости». |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
И вообще, возникает такое впечатление, что просто покрывается убогость языка за счет ООП пуризма. Наличие свойств, событий, и делегатов повышает выразительность C#.
Никогда бы не подумал, что буду защищать C# ![]() ![]() Это сообщение отредактировал(а) arilou - 21.6.2005, 19:55 |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Знаем-знаем, мудрый Каа ![]() Только можно ударится в другую крайность: Двйт рзгврвт, спльз тлк сглсн. Как древние египтяне ![]() Это сообщение отредактировал(а) Дрон - 21.6.2005, 19:57 -------------------- Да. Именно так. |
|||
|
||||
AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Толко что говорил что Java vs NET в отдельной теме. Кроме того проперти использует не только C#. А выразительность не должна перерастать в переигрывание. Вот я нашел для себя пока одно реальное удобство - в визуальном редакторе использование пропертей IMHO более удобно. Не надо думать о правилах именования для тех же JavaBeans. Но минусов вижу несколько больше. Добавлено @ 20:00
Никто не пытается убрать те элемены, которые реально необходимы. Просто здесь попытка выяснить - для чего же все-таки проперти реально нужны. Если только для удобства чтения кода, то это удобство IMHO достаточно сомнительное. |
||||
|
|||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Реально в классах есть данные и операции. Для операций - методы, для данных - свойства, чтобы не нарушать инкапсуляцию. Что тут непонятного?
|
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Во! Коротко и ясно ![]() -------------------- Да. Именно так. |
|||
|
||||
AntonSaburov |
|
||||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Ну и зачем тогда
и кроме этого иметь возможность делать
Если сделать для себя критерий - если я собираюсь менять данные, то нужны проперти, а если буду что-то делать, то методы - то он рушится при попытке сделать кроме смены значения еще что-то, потому как порождает еще какое-то ДЕЙСТВИЕ. А значит это фактически просьба к объекту - сделай что-нибудь. По сути вызов метода. Одно то, что часто идет дублирование пропертей и методов говорит о том, что к этому понятию отношение очень разное. И неоднозначное. А неоднозначность не очень хорошее дело. Если мы говорим о том, что проперть - это чистый сеттер и геттер и только из-за инкапсуляции мы прячем это поле. И может быть когда-нибудь нам неожиданно потребуется добавить еще что-то, то опять мы упираемся в то, что это по сути - методы. Просто вызов их несколько иной. И из-за несколько отличного синтаксиса нам это преподносится как величайшее достижение ООП ? Овчинка вообщем-то выделки не стоит IMHO. |
||||||
|
|||||||
Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ну и кому от этого легче? Программисту вообще то должно быть глубоко все равно, что он меняет, свойство ли, или там накручено двести строк кода. И опять таки, что в этом принципиально иного по сравнению с setSpeed?
Согласен. -------------------- |
||||
|
|||||
Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 92 |
Дык, никто же не заставляет ![]() Другое дело, что это действительно удобная вещь. Просто удобная ![]() Никто не говорит о том, что это что-то революционное и т.п. Это только очень приятное и очень естественное дополнение языка. Знаете как в C++ Builder были реализованы проперти? ![]()
Т.е. были методы get и set -- доступные по отдельности. И было дополнение -- позволяющее их объединить. Странно, вообще-то, от программистов слышать такое яростное отрицание чего-либо ![]() Это сообщение отредактировал(а) Дрон - 21.6.2005, 22:04 -------------------- Да. Именно так. |
||||
|
|||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ты просто яростного отрицания не видел ![]() ИМХО же сводится к тому, что вводить их не стоило; но раз они есть - флаг им в руки, если придется писать на шарпе я буду их пользовать как велит партия и правительство. Но ведь и пофилосовствовать нужно ![]() -------------------- |
|||
|
||||
mr.DUDA |
|
||||||||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
А что означает "развитие" для декларативных языков? Когда в последний раз что-либо развивалось?
Если тебе это будет глубоко противно - лучше не используй ![]() На шарпе никто ещё не запрещал юзать методы типа getSpeed()/setSpeed(). Добавлено @ 08:09
Кстати, можно подробнее объяснить, где тут противоречие? Спросил потому, что согласен на все 100% с высказыванием по поводу простоты при замене field на property. -------------------- ![]() |
||||||||||
|
|||||||||||
Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Ну это ж не стандартная процедура, скорее просто пример почему паблик поля это плохо. И проперти явно не были придуманы с мыслью о подобной ситуации. К тому же большая вероятность того, что пришлось бы заменять обращение к паблик полю на метод, или просто даже проперти назвать по-другому, - тогда все равно нужно искать все обращения к полю. -------------------- |
|||
|
||||
arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Хочу пояснить свою мысль насчет данных и операций.
Мы все знаем, что классы были придуманы для того, чтобы объединить в одном месте данные и методы для их обработки. С усложнением программерских задач, данные стали, если можно так выразиться, более гетерогенными. Т.е. сейчас у нас классы оперируют не только внутренними данными, но и внешними, взятыми из других источников. К чему я это говорю? Мне кажется, что понятие "свойство" более точно описывает те данные, которые класс выставляет наружу независимо от их происхождения. Безусловно, можно сделать getSpeed и setSpeed, можно сделать св-во Speed, разницы не будет. В мире .NET считается, что надо использовать свойства. Пословицу про свой устав в чужом доме помните?
Так никто ж не запрещает использовать методы, там где это оправдано. Я предлагаю привести пример, где ты не можешь решить, что использовать, и вместе разберемся. Добавлено @ 11:22
MS пишет, что свойства дают возможность реализовать вычисляемые поля. Только не говори, что методы тоэе могут это сделать ![]() |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |