8 September 2014

Das Experiment, или несколько дней жизни без Resharper'a

Visual StudioC#

Вступление


image

Здравствуйте, меня зовут Vba и я resharper-о зависимый разработчик. Я использую студию(на данный момент 2013.3) в моей профессиональной деятельности для разработки ASP .NET MVC / JavaScript / HTML5 приложений. Неделю назад на «исходе*» моей resharper-лицензии я задался вопросом, а смогу ли я жить и работать без него? Вдохновленный вот этим и этим постами и тем фактом что меня задолбали постоянные подвисания студии и ее прожорливость** я решился на эксперимент.

Предисловие


Многие из вас услышав замечания о проблемах с быстродействием, наверное подумали, про себя, что я плохо разобрался с настройками инструмента и активировал все что можно активировать, тем с самым трансформировав студию в тормоз пятилетки. Должен вас заверить что это не так, я скрупулезно следовал инструкциям по оптимизации, подобной вот этой.

Во избежание недопонимания «железной» составляющей вопроса, привожу пример моей текущей конфигурации:
image

Цели и задачи


  • Главной целью эксперимента является попытка воспроизвести продуктивную среду разработки, со «способностями» и плюшками близкими к resharper-у.
  • Второй главной целю является попытка сделать студию более отзывчивой, непадающей и быстрой.***

Итак, приступим.

Встроенный декомпилятор

Лично я нахожу удобной возможность декомпиляции и просмотра кода сторонних библиотек сразу, не выходя из бани студии. Resharper такую возможность дает.
image
Посмотрим есть ли что либо подобное, но без Resharper-а.

Поиск по данной теме не принес успехов. Удалось найти продукты типа dotPeek, justDecompile или ILSpy, но ни один из них не предоставлял интеграции со студией.

Штатные средства студии

Конечно, базовые фичи студии сильно уступают Resharper-овским плюшкам, но их может хватить на покрытие 90% надобностей.

Навигация

Попробуем настроит NavigateTo на нужный лад:
image

Далее после нажатия на ассоциированные клавиши (в моем случае CTRL+N) получаем:


Конечно это не найдет вам HistoryController если вы наберете hc, но жить можно.

Строковые манипуляции

Здесь, хвала Будде, почти все в порядке. Я без труда смог настроить удаление строки при нажатии CTRL+Y:
image

Так же штатными средствами смог настроит перенос выделенного блока кода вверх или вниз при нажатии CTRL+SHIFT+ALT+UP/DOWN:
image

Ну а так же при помощи небольшого расширения смог получить дублирование текущей строки или выделенного фрагмента:


К сожалению ничего не удалось найти для расширения/сужения выделения (SHIFT+W/CTRL+SHIFT+W). Хотя есть один вариант, это использовать расширение Vim, но он наверное не всем подойдет.

Рефакторинг

Как вы наверное уже смогли догадаться, тут приходится полагаться только на штатные средства студии, т.е. адью извлечение переменных/параметров/полей, умное переименование классов/контроллеров/действий/, помощь в оптимизации кода и нахождении потенциальных ошибок и еще куча, вроде бы, маленьких но полезных функций. Мне все таки удалось найти парочку полезностей типа расширения для извлечения в новый файл или расширение для множественной правки. Не густо но на первое время хватает.

Шаблоны

Здесь неплохо меня выручило расширение Snippet Designer, без него управление шаблонами ох как печально.

Другие элементы

Элементы, замену которым не удалось восполнить

Как-то, довольно быстро я почувствовал нехватку советчика, например об упрощении linq-запроса или о неиспользованной переменой. Не знаю можно ли это восполнить штатными средствами студии.

Похожим образом обстоят дела с навигацией по членам класса и по открытым или модифицированным файлам.

Конечно же это не весь список приятностей и приятных мелочей от которых придется отказаться.

Элементы, исчезновение которых порадовало

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

Тесты

К сожалению по этой части я ничего сказать не могу, так как в конторе используем NCrunch и других запускальщиков тестов пока не нужно.

Полезные расширения


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


Итоги


Главная цель конечно не достигнута, но я намерен продолжать эксперимент. Даже если я потерял в продуктивности, мне кажется что я выиграл в быстродействии (примерно 500мб памяти и более шустрый UI). Печально осознавать тот факт что в 21-ом веке я должен наблюдать как среда разработки, родом из второй половины 20-ого столетия, жрет память, виснет, извергает проклятия и падает время от времени если я ставлю на нее такие продукты как resharper. Я думаю ребята из JetBrains проделали замечательную работу, просто мне кажется что микрософт должны что то сделать со своим продуктом, иначе дальнейшее его использование будет затруднительным. Хотя им наверное плевать, у них ведь монополия.

Послесловие


* А точнее невозможностью дальнейшего обновления из за истечения определенного срока после покупки версии номер 7 данного продукта. Данное истечение имело место довольно давно, но задумался я только недавно.

** Под подвисаниями студии и ее прожорливости я имею ввиду примерно 1.1Gb памяти на среднем проектике и неотзывчивость курсора при правке файлов.

*** Я ни в коем случае не считаю что мои проблемы с подвисаниями студии напрямую связанны с Resharper. Я считаю что главная проблема нестабильности студи кроется в ней самой, этому наверное можно посвятить отдельный пост.
Tags:visual studio 2013 c#
Hubs: Visual Studio C#
+2
6k 28
Comments 15
Popular right now
Программист Power BI Senior
from 80,000 to 125,000 ₽ТатнефтьКазаньRemote job
Программист .NET
from 50,000 to 110,000 ₽SoftMastersRemote job
Разработчик C#
from 170,000 ₽TennisiМоскваRemote job
.NET C#/Blazor Developer
from 3,000 to 4,000 $Hand2NoteRemote job
SharePoint Developer C# .NET
from 80,000 to 100,000 ₽Витро СофтRemote job
Top of the last 24 hours