![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 3 Всего: 154 |
регресс.
будет.... в следующе версии.... не в следующей, так в последующей. Или будет что-то типа такого. ИБО это очень удобный и правильный механизм. Его не зря в C# добавили. -------------------- |
|||
|
||||
| Domestic Cat |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 9 Всего: 172 |
Эту фичу пытались добавить в 1.5; дело в том что в Java сообществе любой человек может высказать свои пожелания к следующей версии, после чего решают добавлять или нет. В результате не добавили. Лично я никакой крутизны в перегрузке операторов не вижу. Глубоко в нас сидит коечно восприятие "кульности" такой перегрузки; по крайней мере уменя оно сидит со времен 386 и Паскаля. Так вот, каковы конкретно преимущества ? 1. Работать проще (заметьте, экономии места нет, скомпилируется все равно одинаково). ... и все. Объясню: как часто оно надо? Скажем приложение клиент-сервер - куда совать эту перегрузку? Или ХМЛ редактор? Ну ладно, пару мест можно найти, и то с натяжкой. В основном это надо в приложениях, где идет работа с определенными юзером типами данных, причем специфическая - типа комплексных чисел. Тогда да, удобнее писать
чем
Недостатки: 1. Неясный код. Предположим мы видим
Вопрос - что сие означает? Да все что угодно. Ьожет, действительно идет приращение поля объекта. (какого тогда? - часы, минуты, секунды? года?) Нужно смотреть код и выяснять. Гораздо понятнее было бы
Набирать больше, но зато все понятно. Тоже все, ИМХО. Думаю, ни на Java, ни на С# никто мат библиотек писать не будет (из-за потери эффективности) потому "против" для меня перевешивает аргументы "за". -------------------- |
||||||||||
|
|||||||||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Согласен с Domestic Cat, перегрузка операторов сбивает с толку, по крайней мере меня.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: нет Всего: 48 |
Еще один минус перегрузки операторов в C# - то что не все языки .Net ее поддерживают и в рекомендациях предлагается дублировать все перегруженные операторы обычными методами, что сводит удобность операторов на нет.
-------------------- Account removed |
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: 20 Всего: 36 |
Вот меня всегда удивляло, почему программеры ругают некоторые НЕОБЯЗАТЕЛЬНЫЕ К ПРИМЕНЕНИЮ средства языка. Ну, блин, если нравится использовать переруженные операторы - используй, нет - не используй. Это личное дело каждого, зачем же ругать создателя?
-------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Тут еще надо учитывать договоренность в команде |
|||
|
||||
| [Last]Wizard |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 20.7.2004 Где: Минск, Беларусь Репутация: 4 Всего: 10 |
Kurt, одно дело, когда пишешь код только сам для себя, и никто этого кода никогда не увидит, кроме тебя. Тут можно писать как хочешь. Совершенно другое дело, когда код пишется для кого-то, или в команде, или еще хуже тебе самому приходиться разбираться в чьем-то коде. Тогда хочется ругать не только человека, который это написал, а и создателей языка и всех остальных. Это касается не только перегрузки операторов. |
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: нет Всего: 48 |
Очень был удивлен наличием указателей в C#. Правда их использование там достаточно усложненно и не совсем понятно чем было продиктовано их введение.
-------------------- Account removed |
|||
|
||||
| Coresh DRAW! |
|
|||
|
Unregistered |
а) Насчет свойств. Свойства - вещь рульная и, несомненно, полезная. Я согласен с автором, что они иногда вводят программиста в заблуждение, однако я не согласен с тем, что он обвиняет в этом именно их. Виноваты не свойства, а соглашение о наименованиях в стиле Pascal. Именно благодаря ему нельзя разобраться, где у тебя метод, где поле, где свойство а где константа. Если бы ребята из мелкософт выбрали бы более удобное соглашение о наименованиях, например, как в Java, и/или договорились бы ставить перед свойствами знак подчеркивания, этого можно было бы избежать.
б) Насчет индексаторов. Опять таки вещь нужная. Вот только когда я столкнулся с кодом mess["first"] = "The first", я подумал о том, что лучше было бы пользоваться методом put("first", "The first") а индексаторы оставить для того, чтобы можно было обращаться с объектами, как с массивами, т.е. только через целочисленный индекс. На худой конец, можно было сделать дополнительный индексатор для объектов, но с круглыми скобками. Выражение mess("first") = "The first" меня лично не сбивает с толку. Хотя это на любителя. В конце-концов, привыкнуть не проблема. Вот о чем автор не говорил, а стоило бы, так это об избыточности некоторых служебных слов. Например слово struct вещь явно лишняя, т.к. среда исполнения и сама может догадаться, что если в классе используются только данные примитивных типов, то его объекты лучше размещать в стеке. Так же явно избыточной является возможность перегрузки операции приведения типов. Гораздо логичнее, читабельнее и проще пользоваться методами toXXX(). Ведь никто не станет пользоваться выражением string s = (string) obj вместо string s = obj.toString(). А по большому счету, все эти дискуссии - только потеря времени. Не нравится - придумывай свой язык. Все равно трепотня ничего не изменит. |
|||
|
||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 1 Всего: 165 |
Совместимостью с С++ программистами? --------------------
|
||||
|
|||||
| ivashkanet |
|
||||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Во чё раскопал
А что сейчас мы об этом думаем? ИМХО, все выше перечисленное (свойства, индексаторы, перегрузка) очень полезные вещи. Но все нужно использовать с умом. А при небольшом желании можно многое извратить
Руки оторвать такому програмисту надо. А чтобы изменилось, если бы мы написали:
Это типа нормально? Смысл ведь тот же Перегрузка: Перегрузка должна подчинятся одним и тем же законам (исходя из назначения метода) и соответствовать названию метода. Пользоваться ей так же нужно с умом |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Операции над памятью с пом. указателей быстрее по сравнению с работой над массивами, т.к. нет оверхеда на проверку выхода за пределы. Так что если хочется выжать из шарпа полную производительность при обработке простых массивов данных - пользуемся unsafe, stackalloc и указателями -------------------- ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
mr.DUDA, осторожно, теме 2
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Не заметил.
ivashkanet, гробокопатель ! -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |