Маленький фидбек
От: Аноним  
Дата: 31.08.11 05:36
Оценка:
Привет! Пользуюсь языком с неделю, сам я — заядлый Шарпист и поклонник Microsoft.
Что хотелось бы сказать: во-первых, спасибо за язык, он очень интересен, всячески желаю успехов в дальнейшем!

Всегда вставал вопрос: как ускорять сроки разработки — с помощью технологий, инструментов, готовых библиотек; или с помощью языка?
Nemerle, даже при беглом знакомстве, оставляет впечатление, что скорость разработки на нем зашкаливает, если бы не проблемы с интеграцией:

1. Конструкторы классов. Почему не показываются параметры, когда набираешь "("? Все время приходится клацать shift + space. В своих классах я скромен, поэтому конструкторы практически всегда пустые, но как быть с внешними библиотеками? Я работал с DirectX через SlimDX, и там, стоит отметить, в каждом классе длинющие списки параметров у конструктора. Приходилось клацать shift + space, вводить первый параметр, затем снова shift + space, пару символов и снова shift + space. В общем, все время пропадали подсказки о том, какие же параметры "ест" конструктор. Более того, в автокомплите все время появляется левый мусор:
такая ситуация, есть конструктор
public this(createFlags : CreateFlags)

затем, когда создаешь экземпляр этого класса и по привычке клацаешь shift + space, в автокомплите частенько выпадал мусор такого плана:
c
cr
cre
crea
creat
...
И так целый список, как собиралось слово createFlags.

2. Автокомплит в атрибутах. Точнее, его полное отсутствие. Ребят, ну неужели никто этого неудобства еще не заметил? Я конечно не сторонник копипаста, но мне пришлось очень часто этим заниматься, перенося атрибуты полей.

3. Автокомплит в макросах. Ну почему, почему он не работает в самих макросах?!
[...]
macro MacroName(...)
{
    // Здесь автокомплит полностью НЕ работает
    Impl.DoTransform(...)
}

module Impl
{
    // Здесь автокомплит работает
    // И то, только внутри DoTransform
}

Понятно, что это логика парсера. Но можно же для слова macro сделать исключение? И обрабатывать его, как тело метода

Так же, у меня не работал автокомплит внутри квази-цитат, это дико не удобно. Однако подсветка в них работает.

4. Пресловутый ворнинг о неиспользуемом параметре. Возможно, это очень полезная фича, возможно она сильно снижает ошибки, совершенные по невнимательности. Но когда я использовал SlimDX, то был очень огорчен, что каждый метод там возвращает SlimDX.Result. В итоге код был безумно быдляцким, вдоль и поперек был напичкан портянками из записей "_ = ххх" — что очень сильно расстраивало глаз. Компилятор сказал, что дескать добавь nowarn и игнорируй на здоровье. Но, блин, как это сделать? Почему нельзя как в C# Студии, в настройках проекта выбирать некий Warning Level?

У этой особенности есть еще один малоприятный аспект. После выражения, где игнорируется возвращаемое значение не работает автокомплит.
// здесь работает
xxx(); // игнорирую возвр. значение
// здесь уже не работает


5. Православный match. У меня не работает автокомплит при вводе паттерна.
macth(xxx)
{
  | здесь не работает автокомплит => здесь вроде работает
}

Опять таки, работая с внешней либой, совершенно не понятно, какие значения она может принимать. И дико раздражает, что приходится прибегать к копипасте имени класса.

6. Ну и самая раздражающая фича автокомплита: никакой фильтрации по релевантности. Надо мне допустим выбрать одно из значений enum'а, или одно из статических полей класса, так нет же, автокомплит выдает все внутренности, которые даже не могут быть использованы в контексте. Кроме того, у enum'а картинка такая же, как у класса. Это сбивает с толку. Особенно когда нажимаешь точку, а там не только значения этого enum'а, а еще и всякий мусор.

7. Rename класса — ребят, ну это прошлый век же. Почему нельзя переименовать имя класса?

PS. Работал в VS10.
баги
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.