Visual Studio

индекс
38,32

VS 2010 улучшения в Intellisense

image В сегодняшнем посте, я расскажу о небольшом, но очень удобном нововведении в intellisense у VS 2010, которое улучшает фильтр автодополнения типов и членов. Вы сможете более просто и эффективно работать с API при написании кода.



Работа Intellisense в VS 2008

Для того, чтобы правильно оценить нововведение intellisense в VS 2010, давайте выполним простой сценарий в VS 2008, где мы желаем написать простой код, который изменяет свойства GridView.

Мы начинаем печатать “GridView1.Edit”, чтобы увидеть список доступных Edit членов элемента управления. В VS 2008, intellisense показывает отфильтрованный список с элементами, которые начинаются со слова “Edit”

image

Отличный вариант, если нам нужен метод/свойство/событие, которое начинается с “Edit”. Но это плохо работает, если элемент объекта, который мы ищем, начинается с других слов (например: событие “RowEditing” или метод “SetEditRow()”). Нам приходится прокручивать список вверх, вниз, производя поиск нужного элемента, а то и открывая Object Browser или MSDN.

Работа Intellisense в VS 2010

Теперь попробуем проделать тот же сценарий в VS 2010. Когда мы набираем “GridView1.Edit” в VS 2010, то видим, что свойство EditIndex подсвечивается по умолчанию. Но, intellisense список отфильтровал и показал все элементы, которые содержат слово “Edit”.

image

Данное нововведение позволяет более быстро найти нужный метод/свойство/событие отвечающий за изменение объекта.

Поиск ключевых слов

Данная новая возможность фильтрации в VS 2010 весьма полезна для поиска любого члена, не зависимо, с какого слова он начинается. К примеру, если мы желаем активировать постраничную навигации в datagrid, но не можем вспомнить, как это сделать. Достаточно написать “GridView1.Paging” и в появившемся списке будет отфильтрованы все элементы, которые содержат слово “Paging”. Обратите внимание, GridView фактически не содержит ни одного объекта, который начинается со слова “Paging”.

image

Поиск типов

Новая возможность фильтрации в VS 2010, которая позволяет быстро находить нужные классы и типы. Например, когда мы набираем тип “List” для объявления переменной, редактор автоматически отфильтрует и покажет все типы, который содержат в названии слово “List” (включая IList<> и SortedList<>, которые не начинаются на “List”).

image

Intellisense, основанный на Pascal Case

Правила именования .NET Framework определяют, что имена типов и членов основаны на “Pascal Cased” по умолчанию. Это означает, что каждое слово в типе или члене должно начинаться с заглавной буквы (например: PageIndexChanged).

Intellisense фильтрация в VS 2010 позволяет быстро искать и отфильтровывать объекты, названные по правилам именования паскаля. Например, если мы напечатаем “GridView1.PIC”, то VS 2010 отфильтрует и покажет все члены, которые содержат PIC в своем имени, а также члены, которые названы по “Pascal Cased”, у которых сегменты слова начинаются последовательно с данных букв:

image

Обратите внимание, что PIC выводит как “PageIndexChanged”, так и “PageIndexChanging”. Это избавляет нас от лишних нажатий клавиш для написания любого имени объекта.

Обновление
Продолжение темы нововведений — Поиск и навигация по коду в VS 2010
+23
23 октября 2009, 12:34
7

комментарии (69)

–11
lam0x86 #
Это всё, конечно, хорошо, но разработка таких фич занимает времени едва ли больше, чем написание подобных заметок.
+10
jeje #
Софт любят за внимание к мелочам.
+1
lam0x86 #
Согласен, но если бы в VS2010 из новинок были одни только мелочи…

Где-то читал, что в новой версии был существенно дополнен API для плагинов, что, якобы, позволит решарперу и другим подобным тулзам использовать готовый AST, предоставляемый VS, вместо того, чтобы каждый раз при открытии файла парсить его заново и хранить в памяти огромное количество дублирующей информации. Вот про это было бы действительно интересно почитать…
0
impwx #
Гениальные вещи всегда лаконичны. Важно не то, сколько времени их реализовывать, а то, сколько оно позволит этого времени сэкономить.
+3
sdvn #
Ну наконец то! Молодцы, что взяли этот функционал из VisualAssist X. =)
–9
Plague #
Т.е. попросту украли идеи. :)
0
sdvn #
Эти идеи витают в воздухе. Их реализовали не только в VA, но и в R# (не все, правда =-( ).
–2
elmm #
Как мне кажется это не в первой.
С каждым новым релизом студии, встроенные возможности редактора приближаю к асисту, но он всё равно остаётся впереди :)
0
Shchvova #
Не надейтесь. Всеравно придется покупать VisualAssist. Потому что описанное до него далеко, за исключением аббревиатур. Эх… Помидорная радость…

Да, для всяких до-диез и так там нормально все вроде было, для C++ совсем ужасно, просто небо и земля. Для С++ тоже все будет красиво?
0
derigel #
Последнее в ReSharper называется CamelHumps. И есть оооочень давно ;)
0
workless #
Плохо то что в RS нету первого :(, в отличие от VA
0
ttil #
Поправочка.
CamelHumps в ReSharper — это навигация Ctrl + LeftArrow/RightArrrow не словами, а по «горбам». Т.е. PageIndexChanged разобъется на 3 части. Аналогично для выделения Ctrl + Shift + LeftArrow/RightArrrow и Ctrl + W.
А для Intellisense эта фича работает независимо от этого параметра (и действительно давно, но что никак не умаляет эту фичу в студии).
0
ttil #
Сорри, поправлю сам себя, все было правильно. То, что я описал — это опция Use CamelHumps в Options из раздела Editor. Но в Intellisense это работает независимо от этой опции и тоже называется CamelHumps.
0
Krofes #
Да, полезно :) Спасибо!
0
impwx #
Что любопытно — когда вводишь одну букву, оно просто скроллит до этого места, а когда две или больше — уже начинает фильтровать. Приятная мелочь.
0
Kwull #
было бы не плохо указывать авторство статьи и то что это перевод: VS 2010 Code Intellisense Improvements
0
Kwull #
извиняюсь, нашел ссылку на оригинал
0
jeje #
Обижаете «ветеранов» хабра :D
0
utk #
Неплохо, неплохо. Функционал ReSharper'а потихоньку переезжает в Visual Studio — быть может, когда-нибудь можно будет работать на чистой VS без всяких плагинов.
0
impwx #
Интересно только, с какой скоростью она в таком случае будет работать :) Я конечно понимаю, что это все еще вторая бета, но работает она где-то на 15-20% медленнее чем 2008.
+2
utk #
Меня вообще удивляет ситуация, когда новая версия программа работает медленнее предыдущей. Это как-то в корне неправильно :)

Очень надеюсь, что финальную версию VS 2010 по скорости допилят. Ведь со временем на нее в любом случае придется перейти.
0
workless #
Бета2 по ощущениям не медленнее 2008, и красивей-удобней. дада мне это нравится %)
0
utk #
А решарпер на нее встает?

Как по удобству, если сравнивать 2010 с 2008+решарпер?
0
workless #
У решарпера пока нет совместимости с 2010
0
maseal #
resharper 5 с поддержкой 2010 студии есть в EAP варианте, т.е. пока ещё даже не бета
0
workless #
-Visual Studio 2010 support (coming soon)

хотя надо вечером будет попробовать
0
Timmay #
А мне показалось, что редактор кода подтупливает. Не на секунды, а на доли секунд, но всё равно расстраивает.
Курсор как будто с инерцией.
Хотя по скорости запуска, открытия проекта, выхода нареканий нет.
–1
jeje #
Так и есть, вы ведь заметили, что редактор кода теперь стал чем-то более другим, это видно как он выделяет код.
0
Timmay #
Да, но единственное оправдание — статус беты, потому что при долгой работе сильно раздражает.
–1
jeje #
на то она и бета версия, которая не всегда расчитана на полноценную работу.
0
workless #
Есть такое, но все таки это бета. а 2008 релиз.
0
Timmay #
Будем надеяться, что всё будет не как обычно, и релиз будет пошустрее беты :)
0
impwx #
Ну почему же, все очевидно. Новые возможности, больше кода — чтобы держать скорость работы хотя бы на том же уровне, нужно очень нехило оптимизировать. Один переход на WPF чего стоит.
0
GooRoo #
Тссс! А не то сейчас придёт XaocCPS и насильно докажет Вам, что это наоборот круто — хоть какой-то прогресс виден все-таки… :)
0
XaocCPS #
бойтесь, я пришел
начну с того, что лично у меня VS 2010 Beta 2 работет быстрее VS 2008 SP1
этим и закончу
0
skobkin #
От 6 студии до 2008 пока такая тенденция. Может быть, они заметят тормоза и начнут оптимизировать скорость.
–1
jeje #
Вы конечно сравнили продукт 10-ти летней давности. Все равно, что сравнивать WordPad и Office 2007
0
Agent_Smith #
от 95 винды до 7ки тоже. Быть может стоит идти в ногу со временем.
0
GooRoo #
В противовес: Adobe Photoshop CS3 работает однозначно быстрее версии CS2.
–1
jeje #
И тут на арене появляется CS4 с возможностью создавать 3D объекты, в приложении для работы в 2D.
+1
GooRoo #
Это как-то меняет тот факт, что десятый фотошоп работает быстрее предыдущей версии? =)
0
Agent_Smith #
В тоже время, они обе однозначно тормознутей CS.
В общем, имеет смысл сравнивать производительность ±1 версии ПО, но ни как не 6й и 2008й студии…
0
GooRoo #
Да Вы знаете, я бы не сказал, что 10-й тормознутее 8-го.
0
skobkin #
О том же и говорю. Растут мощности вместе со сложностью. Надо грамотно использовать мощность компьютеров.
Они сами-то, думаю, не на пентиуме 2 код пишут.
0
maseal #
Ничего-ничего, в 5-м решарпере уже заготовили «вкусностей» для VS2010.
Ребята из jetbrains всё время на несколько шагов впереди в этом плане. И это несмотря на то, что функционал решарпера лишь «отголосок» того, что есть в Idea (это их IDE для Java)
0
utk #
Почитал feature-list пятерки — некоторые моменты весьма вкусные, да.

Ну что же, видимо, так им и суждено развиваться параллельно, а нам — платить и за то, и за другое :)
0
XaocCPS #
пятый ReSharper уже доступен в сборке для Visual Studio 2010, если кто еще не в курсе. качать можно отсюда
www.jetbrains.net/confluence/display/ReSharper/ReSharper+for+Visual+Studio+2010+%28Preview%29
0
XaocCPS #
* правда версии для Beta 2 пока не собрали, обещают скоро
0
AigizK #
Да нет, пусть лучше откроют какой нибудь API, чтоб команды как ReSharper могли им пользоваться, а не изобретать свой велосипед.Все таки у ReSharperа лучше получается чем у разработчиков VS работа с интелисенсом и другими фичами ускоряющими разработку.
+1
superhabra #
А в 2010 этот Intellisense для C++ тоже ломается от BOOST_SCOPE_EXIT?
+1
tangro #
и вообще, какую часть всего этого праздника планируется реализовать для С++? А то лично у меня родная автотодополнялка Visua Studio не завелась для С++ проектов ни в 2005 ни в 2008 студии. Т.е. она, конечно, иногда кое-что пыталась делать, но выходило у нее это крайне убого.
0
GooRoo #
Visual Assist X вроде как немного справляется, особенно если работать с каким-нибудь Qt, где «красивая» иерархия классов. А вот для STL подсказки временами бывают вообще нечитаемые.
0
GooRoo #
А если это STLport, то и подавно…
0
tangro #
Visual Assist X отлично справляется, как правило. Токмо им одним и живы. Но статья-то об улучшениях в родной автодополнялке.
0
GooRoo #
Спасибо капитан.
0
Shchvova #
По моему она после запуска студии ломается( без VA смотреть противно). Больше мешает чем помогает — с толку сбивает а пользы ноль.
0
superhabra #
Да VA ситуавцию не меняет — он то работает как надстройка над Intellisense'ом. Как вставляю BOOST_SCOPE_EXIT, так весь код подчёркивает красной волнистой, ни о каком дополнении можно не мечтать.
0
AxisPod #
VS 2010 разработан на WPF, хотя судя по внешнему виду не все контролы. Скорость работы WPF зависит от видяхи у меня дома к примеру вообще не подтормаживает, работает довольно резво, но если бы на моем компе тормозило, был бы в шоке, с другой стороны покупать железо для офиса на уровне игровых систем это тоже маразм. Проблема бетки у меня одна (пока по первой, вторую еще не щупал) внезапные зависания (помогает убийство процесса) особенно при компиляции (хотя подозрение на сохранение файлов) и временами перестает перерисовываться окно.
0
eschava #
а что за цветные метки на полях?
–1
jeje #
Они и в 2008 версии есть, показывают какие места в коде вы изменяете, какие были недавно изменены и сохранены.
+1
workless #
в 2005 тоже
0
wolf13h #
Можно еще добавить и про ctrl +,
–1
jeje #
А это уже совсем другая статья, которую я только что выложил ;)
habrahabr.ru/blogs/vs/73199/ ;)
0
vzgromozdun #
А можете проверить такую штуку:

IList = new [тут_вызвать_Intellisense]

Оно предложит доступные реализации IList или нет?
Увидел это в MonoDevelop — очень понравилось

–1
jeje #
К сожалению в данном случае ничего не изменилось.
+1
PATRICK17 #
теперь то я понимаю, что редактор eclipse достаточно хорош :)
0
vzgromozdun #
Полностью с Вами согласен, но приходится пользоваться тем чем приходится пользоваться. Ну и с Решарпером все-таки намного лучше!
+1
naum #
Просто к сведению, в Delphi 7 (много лет назад) это уже было…

Чем больше я смотрю, тем смешнее мне становится. Никого не хочу обидеть, для меня VS рабочий инструмент так же как и для вас, но VCL/CLX (qt-wrapper) + среда много лет назад подняли планку. Не будем рассуждать о том «где они сейчас?» и устраивать холивары. Если не говорить об уровне абстракции, то VCL изначально била .Net в хвост и в гриву (к сожалению) — сурсы открыты, архитектура достойна…

* Накатились слезы, замучала ностальгия, заболела спина *
0
Grant_M #
У меня подсказки появляются только принудительно, то есть если я нажимаю Ctrl + пробел.

Это у меня глюк такой или так и задумано?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.