Всем привет. В ревизии 9416 была добавлена фича "get-only automatic property".
На мой взгляд — это совершенно не нужная, интуитивно не понятная и засоряющая язык фича. Если нужно использовать поля, то нужно использовать макрос Accessor или явное объявление свойства (возможно с использованием локальной для свойства переменной).
Собственно фича, как я понимаю, была добавлена ради примера использования отраженного в тесте fieldof.n.
Просьба выражать вое мнение.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Всем привет. В ревизии 9416 была добавлена фича "get-only automatic property".
VD>На мой взгляд — это совершенно не нужная, интуитивно не понятная и засоряющая язык фича. Если нужно использовать поля, то нужно использовать макрос Accessor или явное объявление свойства (возможно с использованием локальной для свойства переменной).
Имхо это уже не в ту степь, вы так релиз еще годами не сделаете. Всегда будет 10к каких-то фич, которые нужны одному-двум конкретным программерам.
По делу: как значение свойству проставлять? в конструкторе? Так чем это лучше:
string Name { get; private set; }
Лично мне кажется, что уже пора завязывать реализовывать фичи особенно таких спорных и бросил бы силы на интеграцию, фикс багов/стабилизцию, приведение в порядок исходников в svn ( сейчас если затащить исходники, то вместе с компилятором вытягивается куча какого-то непонятного барахла, может это семплы какие-то, но тогда их тоже надо как-то структурировать, чтоб было понятно что к чему ).
Здравствуйте, Visor2004, Вы писали:
V>куча какого-то непонятного барахла
Извините за резковатый тон, может быть это классные и даже гениальные вещи, но пока они находятся а) в полукомпилябельном состоянии б) не структурированы; полезности с них не много. Я если честно даже сходу не понял для чего нужен тот или иной проект, потому что некоторые так и не смог скомпилировать и запустить.
Абсолютно согласен. Nemerle уже сейчас достаточно интересный язык. Его малая распростаннёность никак не связана с недостатком фич. Причина в том, что нет удобной интеграции, нет нормальных примеров, много багов и т.д.
Было бы хорошо, чтобы любой .Net программер мог начать писать на Nemerle в течение 15-20 минут, не думая о "что бы эта ошибка могла означать". Для этого как минимум надо допилить интеграцию(для 2010 обязательно) и шаблоны проектов.
Немного сумбурно получилось, но думаю идея понятна. Хотелось бы в какой то момент взять Nemerle в следующий проект не опасаясь каких-то малоизученных глюков со студией и тд.
VD>>На мой взгляд — это совершенно не нужная, интуитивно не понятная и засоряющая язык фича. Если нужно использовать поля, то нужно использовать макрос Accessor или явное объявление свойства (возможно с использованием локальной для свойства переменной).
Макрос fieldof (который возвращает поле из-под автосвойства) вполне может быть полезен. Сама идея get-only автосвойств по крайней мере интересна. Я, правда, тоже удивился, что именно сейчас ее nn-у захотелось реализовать, ведь мы вроде фичи перед релизом не добавляем.
Ну, а урок такой: когда много людей имеют commit-привелигии, нужен какой-то формальный процесс внесения изменений, штоле.
Ведь так и бекдор может появиться в ревизии 9417...
Здравствуйте, catbert, Вы писали:
C>Ну, а урок такой: когда много людей имеют commit-привелигии, нужен какой-то формальный процесс внесения изменений, штоле. C>Ведь так и бекдор может появиться в ревизии 9417...
Я считаю, что в таких больших проектах коммиты должны делаться в отдельный репозиторий, который должен будет мерджится с основным раз в неделю, например, в 1-2 ответственных за это лица. Иначе каким бы процесс не был, как минимум, будет бардак в публичном репозитории, как максимум — бесконечная фаза стабилизации и предрелизных бет.
Где там обсуждение то? Почти все забили на это предложение. А раз забили, значит не поддержали.
Я уже сто раз говорил, что добавление фич в компилятор закрыто до релиза. Но почему-то это игнорируется.
C>Макрос fieldof (который возвращает поле из-под автосвойства) вполне может быть полезен.
Я не вижу ничего полезного в этом. Это средство нарушения абстракции. Да и выглядит страшновато.
Кроме того имя fieldof очень странное. Оно похоже на typeof и глядя на него можно подумать, что это макра или оператор возвращающий описание поля.
C>Сама идея get-only автосвойств по крайней мере интересна.
Я вижу странную химию fieldof. Если уж был делать подобную реализацию, то нужно было бы добавлять некий модификатор доступа constoructor only и помечать им set-эксесор.
Но зачем это все нужно когда есть Asccessor?
В общем, есть хорошее правило. Раз нет хорошего решения, то не надо ничего делать. Особенно если есть другие решения.
C>Я, правда, тоже удивился, что именно сейчас ее nn-у захотелось реализовать, ведь мы вроде фичи перед релизом не добавляем.
+1
C>Ну, а урок такой: когда много людей имеют commit-привелигии, нужен какой-то формальный процесс внесения изменений, штоле.
Особо формализовать наверно не надо. А то можно до С++-ного комитета до формализоваться. Но как-то согласовывать нужно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Ну мне, например, не хочется только из-за немерле держать у себя на машине две версии студии. Мало того, мне ещё придётся её где-то качать и потом устанавливать.
Здравствуйте, Visor2004, Вы писали:
V>Здравствуйте, Маслаков Михаил, Вы писали:
V>Да бог с ней с 2010, 2008 до ума довести и будет отлично уже.
Здравствуйте, VladD2, Вы писали:
VD>Но зачем это все нужно когда есть Asccessor?
1) Accessor слишком длинный — я бы коротко и ёмко назвал его Get, а если нужен сэттер, — то GetSet
2) Неудобно модификаторы вешать, там дурацкий синтаксис.
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Ну мне, например, не хочется только из-за немерле держать у себя на машине две версии студии. Мало того, мне ещё придётся её где-то качать и потом устанавливать.
Поставь себе изолэйтед-мод. Цена вопроса ~200 метров.
Поддержка 2010 будет только после выпуска интеграции для 2008-ой. На параллельную разработку сил у нас не хватит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, hardcase, Вы писали:
H>1) Accessor слишком длинный — я бы коротко и ёмко назвал его Get, а если нужен сэттер, — то GetSet H>2) Неудобно модификаторы вешать, там дурацкий синтаксис.
По сравнению с использованием магии fieldof — твои замечания просто мелочи.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Visor2004, Вы писали:
V>Извините за резковатый тон, может быть это классные и даже гениальные вещи, но пока они находятся а) в полукомпилябельном состоянии б) не структурированы; полезности с них не много. Я если честно даже сходу не понял для чего нужен тот или иной проект, потому что некоторые так и не смог скомпилировать и запустить.
А я на них учился писат ьмакросы и розбирался с языком...