Страницы

пятница, 28 мая 2010 г.

Чего не хватает в Delphi

Публикация для конкурса проводимого агрегатором Delphi новостей DelphiFeeds.ru.

Интеграция с SVN

Я говорю не просто о добавлении комманд Update/Commit в какие либо меню. Всё это возможно и в варианте интеграции SVN в Delphi для бедных. Я говорю о широкой визуальной поддержке. Чтобы на Tab-ах редактора и в дереве проекта отображался значок как в TortoiseSVN.

Чтобы изменённые строки в исходниках подсвечивались другим цветом.

Мне понравилось, как сделана интеграция SVN в NetBeans.

Интеграция SVN в IDE NetBeans

SVN команды доступны в отдельном субменю при правом клике как на файле в дереве так по заголовку таба в редакторе.

Фильтры/поиск

Фильтрация и/или поиск везде где только возможно. Я имею в виду, фильтр, который сокращает список доступных для выбора вариантов, по мере набора (filter as you type). Сейчас в Delphi есть фильтр для палитры компонентов - это хорошо и удобно. А какое-то из расширений, позволяет сделать поиск компонентов ещё более удобным. Хочется чего-то подобного и для других окон. Мне очень не хватает такого фильтра/поиска в следующих местах:

  • в инспекторе объектов. Для компонентов с большим числом свойств приходится постоянно скроллить инспектор.
  • в менеджере (дереве) проектов (впрочем, IDE Insight позволяет быстро найти файл по его имени для любого проекта в группе)

Самодиагностика

Хотелось бы, чтобы Delphi умела сама себя диагностировать и предупреждать о случаях возникновения потенциальных ошибок. Например, в случае, если компилятору доступны 2 .pas/.dcu файла с одинаковыми именами. Или если в путях IDE видны несколько BPL-ок с одинаковыми именами. Мне грустно вспоминать сейчас, сколько часов было убито в молодости на попытки выяснить откуда появляются ошибки типа "The procedure entry point @UnitName@initialization$ProcName could not be located in the dynamic link library Package.bpl" или "Unit XXX was compiled with different version of .." и ручной поиск по всем Path папкам делфей. Ведь всё это можно автоматизировать.

Документирование кода

Поддержка синтаксиса JavaDoc. Всё-таки это удобнее и компактнее чем писать в комментариях тэги XML.

Обновлённые Db-контролы

Стандартные контролы в Delphi хороши - спору нет. Но такие вещи как VCL DbControl-ы, сейчас мало кто использует, предпочитая им альтернативные платные/бесплатные варианты. Было бы просто невероятно здорово, если бы вместе с Delphi поставлялся какой-нибудь модный набор Db-контролов. Что-нибудь вроде EhLib.

Дизайнер

Меня немного раздражает дизайнер форм, особенно в последних версиях Delphi. На мой взгляд было бы здорово если б Delphi появилась возможность открывать форму и код в отдельных закладках.

Также, было бы хорошо, если б дизайнер отображал чуть больше информации по контролам/компонентам (например, также, как CnWizards рисует TabOrder прямо на форме) и был чуть более интерактивным, например позволял бы редактировать Caption-ы прямо в дизайнере.

Редактор кода

Очень не хватает автоматической синхронизации параметров процедур в interface и implementation части. Сейчас я для этого использую ModelMaker Code Explorer, но хотелось чтобы такая функция была доступна сразу в IDE.

Подсветка парных begin/end-ов тоже не помешала бы.

Да в общем-то много что можно улучшить и сделать удобнее, достаточно лишь как следует изучить другие продукты такого класса.

Публикации по теме


  • Не знаю как в России, а в моей стране рынок недвижимости пережил огромный спад. Цены уменьшились в 3-5 раз. И если и покупать недвижимость, то сейчас для этого лучшее время. Но это в моей стране. А что об этому думают агентства недвижимости города Москвы - для меня загадка.
  • Раньше, я очень не любил сочетание 3х букв: "SEO". Меня раздражал сам факт того, что люди устраивающие продвижение сайтов, подтасовывают результаты поисковой выдачи, и впереди поисковой выдачи всё чаще попадаются не сайты, производящие хороший контент, а сайты хорошо вложившиеся в поисковую оптимизацию. Сейчас, я стал относится к этому толерантней.

21 комментарий:

  1. дпо поводу спонсоров поста - сочетание трех букв CEO означает Chief Executive Officer - директор. Видимо, имеется ввиду SEO

    ОтветитьУдалить
  2. По поводу первой хрюли: в принципе, аналогичное уже есть - это файлы history и вкладка "History" в редакторе кода - она тоже показывает и историю и diff-ы.

    ОтветитьУдалить
  3. >> Первый пункт...
    И в CnWizards есть вроде такое. Или я не про то?

    >> Поддержка синтаксиса JavaDoc. Всё-таки это удобнее и компактнее чем писать в комментариях тэги XML.

    Зато очень хорошо дружит с PasDoc =)

    >> Самодиагностика

    Поддерживаю! Можно бы сделать и проверку контрольной суммы себя и своих файлов (чтобы вот такого не было: http://www.gunsmoker.ru/2009/08/delphi-delphi.html).

    ОтветитьУдалить
  4. > сочетание трех букв CEO означает Chief Executive Officer - директор. Видимо, имеется ввиду SEO
    deksden, имеется в виду действительно SEO. Просто я набрал это русскими буквами, не подумав, о том, что теперь это выглядит как другое сокращение. My fault. =)

    ОтветитьУдалить
  5. GunSmoker, существенная разница в том, что в NetBeans нет нужды идти на отдельную вкладку. Все изменения подсвечиваются прямо в редакторе кода. =)

    ОтветитьУдалить
  6. реально нужен "модный" набор DB-компонентов и полная интеграция с SVN, все остальное ИМХО - лишнее!

    ОтветитьУдалить
  7. Rob, я тут как раз готовлю материал по небольшому обзору средств генерации документации, но ни разу не слышал про PasDoc. Удобная вещь? Оно действительно поддерживает формат XmlDoc?
    Теперь обязательно попробую, спасибо.

    > Можно бы сделать и проверку контрольной суммы себя и своих файлов
    Я очень надеялся что они добавят что-нибудь в таком духе после выходы первого Induc-a, но к сожалению нет. Хотя было бы действительно актуально.

    ОтветитьУдалить
  8. Роман, кому как. Я например готов отказаться от интеграции с SVN, в обмен на фильтры/поиск. =)

    ОтветитьУдалить
  9. >>Очень не хватает автоматической синхронизации параметров процедур в interface и implementation части.
    О да..отсутствие этой функции иногда прямо таки раздражает
    А не могли бы Вы рассказать как Вы это делаете в Model Maker? Я сколько не пытался реального облегчения труда в нем так и не добился. strict-модификаторы и классовые члены он не поддерживает :(

    ОтветитьУдалить
  10. Алексей, нет, я скорее всего не так немного вас понял. Хотя посмотрите всё равно.
    Вам бы присмотреться вот к этому: http://dephicodetodoc.sourceforge.net/ там поддержка javadoc есть точно.

    ОтветитьУдалить
  11. > А не могли бы Вы рассказать как Вы это делаете в Model Maker?
    На всякий случай уточню: Modelmaker Code Explorer, и "просто Model Maker" - это разные продукты. Первый - инструмент только для рефакторинга, а второй ещё и для дизайна и работы с UML.

    Я использовал только MMX, и там такая синхронизация делается просто - с помощью функции Sync Declaration/Imlementation (горячая клавиша - Ctrl+Alt+Y).

    ОтветитьУдалить
  12. > Вам бы присмотреться вот к этому: http://dephicodetodoc.sourceforge.net/ там поддержка javadoc есть точно.

    Rob, я смотрел. И даже немножко модифицировал. =)
    Кстати, очень интересный проект для изучения исходников. Там очень широко используются паттерны проектирования, и к тому же вместе с кодом идёт большая куча юнит-тестов.

    ОтветитьУдалить
  13. Вот тут http://keeper89.blogspot.com/2009/12/delphi.html тоже есть несколько желаний :)

    ОтветитьУдалить
  14. Keeper - ничего себе немного. Там довольно основательный список претензий =)

    ОтветитьУдалить
  15. >>strict-модификаторы и классовые члены он не поддерживает :(
    Это опять я =)
    В общем со strict'ами и классовыми членам и разобрался.
    Оказывается, надо в опциях проекта задавать версию языка.
    Но вот, как добавлять вложенные типы в класс? Например перечисление.
    Опять я туплю?

    ОтветитьУдалить
  16. >>Очень не хватает автоматической синхронизации параметров процедур в interface и implementation части.
    >>О да..отсутствие этой функции иногда прямо таки раздражает
    Во-истину век живи - век учись. Оказывается в меню Refactor(Delphi 2009) есть операция Change Params...Чтобы ее вызвать надо курсор поставить на имя подпрограммы
    И куда я раньше смотрел

    ОтветитьУдалить
  17. > Оказывается в меню Refactor(Delphi 2009) есть операция Change Params...
    А я в Delphi 6 для это юзаю ModelMaker Code Explorer. Там и Change Params есть и вышеупомянутый Ctrl+Alt+Y. =)

    ОтветитьУдалить
  18. Delphi не хватает надгробия :)

    ОтветитьУдалить
  19. Даже не знаю, что сказать... Пришлось поработать в С# в мелкомягкой студии - нет слов, такое г..но... Свои проекты - исключительно в Delphi.

    ОтветитьУдалить
  20. > Пришлось поработать в С# в мелкомягкой студии - нет слов, такое г..но

    А я вот читаю про C# - очень красивый язык. И автодополнение в Visual Studio на первый взгляд работает лучше чем в Delphi IDE.

    ОтветитьУдалить