Яндекс.Метрика

    Песочница

    Сравнение DevExpress CodeRush и JetBrains ReSharper


    Первый раз я столкнулся с ReSharper лет 5 назад. Мне показалось что он тормозит Visual Studio и вообще его анализ разукрасили мой код до неузнаваемости. Большинство подсказок не представляло для меня ценности и только раздражало. Особо не разобравшись я снес его и пошел дальше валить лес двуручными пилами на протяжение следующих двух лет. Я думаю большинство начинающих, и не очень, разработчиков чувствуют что-то подобное и не понимают пользы ReSharper или CodeRush. В этой статье я сравню наиболее полезные и часто используемые возможности базируясь на моем двух летнем опыте использование CodeRush и годового опыта c ReSharper. Сразу оговорюсь перешел с CodeRush на ReSharper только из-за работодателя (на текущем месте работы компания предоставляет ReSharper).

    Навигация по коду:


    1.Поиск файлов

    Наиболее часто используемая функция. Есть в обоих плагинах. Можно делать поиск по заглавным буквам в сamal case. Чуть лучше реализована в ReSharper, показывает больше деталей о найденных файлах.

    2.Поиск символов

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

    3.Навигация к следующему упоминанию переменной

    В Visual Studio 2010 эта функция встроена, но CodeRush реализация на много изящней. В CodeRush навигация осуществляется с помощью Tab-а, что само по себе революционно плюс подсветка следующего упоминания выглядит лучше.

    4.Навигация по файлу

    В CodeRush отсутствует, есть конечно встроенная функциональность Visual Studio (справа сверху выпадающее меню) и та только в C#. ReSharper же имеет поиск по внутренним элементам файла: классы и методы. Многие скажут, что эта функциональность далеко не такая важная чтобы ее упоминать в сравнительной характеристике. Однако стоит ей попользоваться пару дней и понимаешь, что без нее уже нельзя, особенно на уровне классов, которые обеспечивает доступ к базе данных (data access layer).

    5.Последние открытые файлы и последние правки файлов

    Первое есть в CodeRush и в ReSharper, второе только в ReSharper. Опять же оформление лучше в ReSharper.

    6.Переход к определению (declaration) и реализации (implementation)

    Переход к определению переменной, метода или класса встроен в Visual Studio (Ctrl-Click). Если вы используете Unity Framework, Castle.Windsor или другое решение для реализации шаблона фабрики или репозитория, то вам знакома проблема когда жмешь на метод (Ctrl-Click) чтобы увидеть его реализацию, а видишь только лишь определение интерфейса. Для этого в ReSharper есть переход непосредственно к реализации, а если его еще с помощью Autohotkey прикрутить к Shift-Ctrl-Click, то он вообще становится незаменимым.

    Поиск:


    Поиск использования

    Есть в обоих плагинах. В CodeRush выглядит красивее, но в ReSharper-е больше функциональности. В частности можно отфильтровать только по местам где происходила запись в переменную или только чтение.

    Редактирование и рефакторинг:


    Оба плагина имеют много разных возможностей, но в целом в CodeRush все централизованней и проще. Большинство функций можно вызвать нажатием Ctrl-~. Перед применением CodeRush визуально показывает результат рефакторинга. Ниже несколько наиболее часто используемых мной функций.

    1.Создание метода из куска кода.

    Тут CodeRush явно выигрывает. Вопервых ReSharper показывает модальное диалоговое окно. Зачем? В большинстве случаев я использую параметры по умолчание, а если что-то и надо поменять то лучше это сделать непосредственно с кодом. Последнее что я сделаю это схвачусь за мышку и начну что-то менять в диалоговом окне. Эта функция в большинстве случаев используется для создания вспомогательных private методов для разгрузки сложности public методов. CodeRush же мало того что не нагружает вас диалоговыми окнами так еще и дает возможность выбрать место создания метода.

    2.Переименование метода или переменной

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

    3.String.Format

    Функциональность примерно одинакова. В ReSharper 6 добавили подсветку аргументов, что очень удобно.

    Шаблоны и снипеты:


    CodeRush в этой категории явно выигрывает. Вопервых встроенных снипеттов у него на порядок больше, а чтобы их легче было запоминать есть специальное окошко с подсказками CodeRush Training. Также в CodeRush есть целых сниппет фреймворк. Можно создавать снипеты базируясь на базовых подснипетах. Снипеты это отличительная черта CodeRush, в ReSharper же они конечно расширяют функциональность встроенных в Visual Studio снипетов, но все же этого далеко не достаточно.

    Документация и видео:


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

    Заключение:


    Сложно однозначно сказать какой продукт лучше. ReSharper больше подходит для больших стабильных проектов с разветвленной архитектурой. CodeRush же больше подходит для стартапов и простых проектов, где снипеты могут реально сэкономить время.