Рано или поздно любой разработчик придет к 2 истинам(истин может быть и N штук) 1- Что код проходится рефакторить, задача это не тривиальная и хотелось бы какое нибудь средство автоматизации-вспоможения. 2- Не всегда хватает стандартного инструментария, встроенного в твою стандартную среду разработки по умолчанию. Приходится устанавливать и изучать сторонние компоненты или писать свои. Периодически встречаюсь с задачами, когда нужно рефакторить что либо большое и страшное. Resharper является по факту стандартом для .Net разработчиков, но интересно, что умеют альтернативные программы. Немного расскажу о JustCode, небольшой альтернативе, предложенную Telerikом для разработчиков. Мысли в слух Недавно пришлось переписывать код, моделирующий распространения вирусов в сетях различной топологии (не спрашивайте зачем, я прикладного применения пока не вижу, зато научрук очень хочет видеть графики скорости роста числа и размер зараженных кластеров). Начал я писать эту программу, по серьезному в объектно ориентированно стиле (паттерны билдер, фасад; ооп, инкапсуляция, проверки входных данных на безопасность ). Но вот не задача. При запуске на сети в 100тысяч узлов я за пол дня посчитал 80% задачи, но тк она вылетел с ошибкой то все данные были потеряны. Нужно было быстро переписать в процедурном стиле и забить на всю красоту, и сделать работоспособную модель(вариант написать на с++ хороший, но времени как уже сказал мало). Тогда на помощь мне пришел Resharper. За 2 часа я переписал программа в процедурном стиле, забил на все рецепты лучших теоретиков программирования бизнес систем и вспомнил, чему меня учили на специалисты по HPC. В ИТОГЕ ПРОГРАММА УСКОРИЛАСЬ МИНИМУМ В 6 РАЗ. (точнее сказать не могу тк ООП программа вообще не закончилась корректно) Недавно обратил внимание на относительно новый продукт для помощи в рефакторинге от Telerik. Называется JustCode. Продукт новый. Анонс был на PDC 2009 и все информация о нем, датируется ноябрем 2009 года. По этому конкурентом Resharperа он пока не является, и некоторая функциональность дублирует функциональность vs2010, НО уже есть некоторые функции, которых я ранее не у кого не видел. А теперь перейдем от вводной части к делу! Заявленные возможности: Поддержка Visual Studio 2010 *1
Поддержка JavaScript, HTML, MVC *2
Кроссязыковой рефакторинг. C#, VB.NET, XAML, ASP.NET, JavaScript, HTML, XML. *3
Стандартные возможности рефакторинга по навигации, извлечению методов, интерфейсов, переименованию *4
*1 по непонятным для меня причинам на winserver2k8r2 потребовал .Net 3.5 sp1. После включения этой фичи на сервере заработал. Мне не понятно почему, если уже установлен .Net 4.0 проверять наличие обновлений 3.5sp1
*2 возможность работы с JavaScript, HTML и C# кодом в MVC была продемонстрирована на PDC2009, а в Resharper работа с HTML появилась в бета билдах 5.0 версии только в этом году, JavaScript вроде бы Resharper до сих пор не умеет рефакторить.
*3 Не знаю на сколько полна эта возможность, а так же ее востребованность. Но по крайней мере переименовывает классы между C# и VB файлами нормально.
*4 примерно половину из возможностей по рефакторингу продемонстрированного на всех demo видео умеет vs2010 Ощущения от использования Проверил все вышесказанное, И оно действительно работает. По моим субъективным впечатлениям штука довольно удобная. Возможность генерировать классы, get/set и конструкторы сильно ускоряет рутинные процессы. Инструментирует код куда быстрее Resharperа, но он у Resharperа то и функционала куда больше. Единственное чего мне сильно не хватает- это подсказок по стилю оформления кода, именования переменных. Рекламные и не очень заявления от самого Telerik Как известно сам Telerik делает очень классную рекламу своих продуктов на своем сайте в виде вебкастов. Не исключение и этот продукт. Вот список видео с TelerikTV
0 Недавний обзор JustCode в связи с релизом Q1 2010
1 JavaScript
2 Кроссязыковой рефакторинг
3 Извлечения методов
4 Переименование Навигация по коду 1,2
Честно говоря, после других инструментов и самой VS2010, эта штука кажется игрушкой, но надеюсь что у нее будет хорошее развитие. Сам TELERIK вывесил в качестве рекламы на своем сайте вот такую табличку сравнения функционала с VS Извиняюсь за наглый ctrl+c ctrl+v, но надеюсь Telerik, а главное Уважаемый читатель не обидится. Feature
Visual Studio2008
JustCode
On-the-fly Analysis
Limited
Yes
Solution Wide On-the-fly Analysis
Not Supported
Yes
Solution Wide On-the-fly Error and Warning Highlighting
Not Supported
Yes
Go To Definition
Yes
Yes
Go To File
Not Supported
Yes
Go To Type
Not Supported
Yes
Go To Symbol
Not Supported
Yes
Go To Member
Not Supported
Yes
Find Usages
Yes
Yes
Find Extended Usages
Yes
Yes
Highlight Usages
Yes
Yes
Find Base Types
Not Supported
Yes
Find Inheritors
Not Supported
Yes
Find Members Returning Type
Not Supported
Yes
Find Members Taking Type
Not Supported
Yes
Find Overridden Members
Not Supported
Yes
Find Overriding Members
Not Supported
Yes
Locate In Solution Explorer
Not Supported
Yes
Camel Case Search
Not Supported
Yes
Code Generation Commands
Yes (1 command)
Yes (9 configurable commands)
Context-based Code Generation
Not Supported
Yes
Format Code
Yes
Yes
Learn Code Style From File
Not Supported
Yes
Solution-wide Refactorings
Limited (7 refactorings)
Limited (8 refactorings)
Context-based Refactorings
Not Supported
Yes
Quick Fixes
Not Supported
Yes (7 fixes)
Context-based Quick Fixes
Not Supported
Yes
А вот полная матрица возможностей для рефакторинга, для каждого из поддерживаемых языков (JustCode Feature Matrix) Feature
Shortcut
C#
VB.NET
ASP.NET
XAML
JavaScript
HTML
Solution Wide On-the-fly Analysis
Yes
Yes
Yes
Yes
Yes
Yes
Error Checking
JustCode > Windows > Show Error List Window…
Ctrl+Alt+Y
Yes
Yes
Yes
Yes
Yes
Yes
Warnings
JustCode > Windows > Show Error List Window…
Ctrl+Alt+Y
Yes
Yes
Yes
Yes
Yes
Yes
Code Highlighting
Yes
Yes
Yes
Yes
Yes
Yes
Inspection Details
Yes
Yes
Yes
Yes
Yes
Yes
Error Navigation
JustCode > Go to Previous Error, JustCode > Go to Next Error
Ctrl+Up/Down Arrow
Yes
Yes
Yes
Yes
Yes
Yes
Marker Bar and Status Indicator
Yes
Yes
Yes
Yes
Yes
Yes
Status Bar
Yes
Yes
Yes
Yes
Yes
Yes
Errors in Own Dialog Window
Ctrl+Alt+Y
Yes
Yes
Yes
Yes
Yes
Yes
Navigate From Current Position
JustCode > Navigate From Current Position…
Alt+`
Yes
Yes
Yes
Yes
Yes
Yes
Go To Definition
JustCode > Navigate > Go To Definition
F12
Yes
Yes
Yes
Yes
Yes
Not Supported
Go To File
JustCode > Navigate > Go To File…
Ctrl+Alt+G
Yes
Yes
Yes
Yes
Yes
Yes
Go To Type
JustCode > Navigate > Go To Type……
Ctrl+Alt+T
Yes
Yes
Yes
Yes
Yes
n/a
Go To Symbol
JustCode > Navigate > Go To Symbol…
Ctrl+Alt+S
Yes
Yes
Yes
Limited
Yes
Not Supported
Go To Member
JustCode > Navigate > Go To Member…
Ctrl+Alt+M
Yes
Yes
Yes
Yes
Yes
n/a
Find Usages
JustCode > Navigate > Find Usages…
Alt+F7
Yes
Yes
Yes
Yes
Yes
Not Supported
Find Extended Usages
JustCode > Navigate > Find Extended Usages…
Shift+F12
Yes
Yes
Yes
Yes
Yes
Not Supported
Highlight Usages
JustCode > Navigate > Highlight Usages
Ctrl+Shift+F7
Yes
Yes
Yes
Yes
Yes
Not Supported
Highlight Usages in File
JustCode > Navigate > Highlight Usages in File
Ctrl+Shift+F8
Yes
Yes
Yes
Yes
Yes
Not Supported
Go To Previous/Next Usage
JustCode > Navigate > Go To Previous Usage, JustCode >
Navigate > Go To Next Usage
Ctrl+Up/Down Arrow
Yes
Yes
Yes
Yes
Yes
Not Supported
Find Base Types
JustCode > Navigate > Find Base Types
Yes
Yes
Yes
Yes
n/a
n/a
Find Inheritors
JustCode > Navigate > Find Inheritors…
Ctrl+Alt+B
Yes
Yes
Yes
Yes
n/a
n/a
Find Members Returning This Type
JustCode > Navigate > Find Members Returning This Type…
Ctrl+Alt+R
Yes
Yes
Yes
Yes
n/a
n/a
Find Members Taking This Type
JustCode > Navigate > Find Members Taking This Type…
Ctrl+Alt+P
Yes
Yes
Yes
Yes
n/a
n/a
Find Overridden Members
JustCode > Navigate > Find Overridden Members…
Yes
Yes
n/a
n/a
n/a
n/a
Find Overriding Members
JustCode > Navigate > Find Overriding Members…
Yes
Yes
n/a
n/a
n/a
n/a
Locate In Solution Explorer
JustCode > Locate In Solution Explorer
Shift+Alt+L
Yes
Yes
Yes
Yes
Yes
Yes
Camel Case Search
Yes
Yes
Yes
Yes
Yes
Yes
Add Stubs for Required Members
JustCode > Code > Add Stubs For Required Members
Ctrl+K, Ctrl+M
Yes
Yes
n/a
n/a
n/a
n/a
Create Set/Get Property
JustCode > Code > Create Set/Get Property
Ctrl+R, Ctrl+P
Yes
Yes
n/a
n/a
n/a
n/a
Create Constructor
JustCode > Code > Create Constructor
Ctrl+R, Ctrl+C
Yes
Yes
n/a
n/a
n/a
n/a
Duplicate Text
JustCode > Code > Duplicate Text
Ctrl+D
Yes
Yes
Yes
Yes
Yes
Yes
Expand Selection
JustCode > Code > Expand Selection
Ctrl+W
Yes
Yes
Yes
Yes
Yes
Yes
Format Code
JustCode > Code > Format Code
Ctrl+Alt+F
Yes
Yes
Yes
Yes
Yes
Yes
Learn Code From This File
JustCode > Code > Learn Code From This File…
Yes
Yes
Yes
Yes
Yes
Yes
Feature
Shortcut
C#
VB.NET
ASP.NET
XAML
JavaScript
HTML
Rename Namespace
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
Not Supported
Not Supported
n/a
n/a
Rename Type
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
Yes
Yes
n/a
n/a
Rename Method
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
Not Supported
Not Supported
Yes
n/a
Rename Field
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
Not Supported
Not Supported
n/a
n/a
Rename Property
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
n/a
n/a
n/a
n/a
Rename Event
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
n/a
n/a
n/a
n/a
Rename Parameter
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
n/a
n/a
Yes
n/a
Rename Local Variable
JustCode > Code > Rename…
Ctrl+R
Yes
Yes
n/a
n/a
Yes
n/a
Rename Element (ASP.NET)
JustCode > Code > Rename…
Ctrl+R
n/a
n/a
Yes
n/a
n/a
n/a
Rename Element (XAML)
JustCode > Code > Rename…
Ctrl+R
n/a
n/a
n/a
Yes
n/a
n/a
Move or Delete Parameter
JustCode > Code > Move or Delete…
Ctrl+R, Ctrl+S
Yes
Yes
n/a
n/a
Not Supported
n/a
Introduce Field
JustCode > Code > Introduce Field
Ctrl+R, Ctrl+L
Yes
Yes
n/a
n/a
Yes
n/a
Inline Variable
JustCode > Code > Inline Variable
Ctrl+R, Ctrl+I
Yes
Yes
n/a
n/a
Yes
n/a
Extract Method
JustCode > Code > Extract Method
Ctrl+R, Ctrl+M
Yes
Yes
n/a
n/a
Not Supported
n/a
Organize and Add Missing Usings
JustCode > Code > Organize and Add Missing Usings
Ctrl+Shift+U
Yes
Yes
n/a
n/a
n/a
n/a
Feature
Shortcut
C#
VB.NET
ASP.NET
XAML
JavaScript
HTML
Create Field
Yes
Yes
n/a
n/a
n/a
n/a
Create Variable
Yes
Yes
n/a
n/a
Not Supported
n/a
Create Method
Yes
Yes
n/a
n/a
Not Supported
n/a
Insert Cast
Yes
Yes
n/a
n/a
n/a
n/a
Recent Comments