Новини от първа ръка за R# интервю със Сергей Шкредов
Ексклузивни IT новини, рецензии и интервюта
Новини от първа ръка за R#: интервю със Сергей Шкредов
Сигурен съм, че много .Net разработчици познават и уважават добре познатото разширение за MS Visual Studio - ReSharper (R#). Този продукт, създаден от петербургската софтуерна компания JetBrains, успя да спечели наистина световно признание. В края на миналата година беше пусната седмата му версия, която освен всичко друго осигурява пълна поддръжка за новото Visual Studio 2012, като същевременно запазва съвместимостта с по-старите версии на VS. Втората важна характеристика на новияReSharper 7е поддръжката на приложения за Windows 8 и WinRT.
Версията скоро беше последвана от актуализация 7.1, която донесе огромен брой подобрения и подобрения (за повече подробности, които е по-добре да прочетете отделно тук и тук). Във връзка с пускането на тази важна основна версия наReSharper, решихме да поговорим със Сергей Шкредов, продуктов мениджър на JetBrains, за да получим информация от първа ръка за всички последни новини и непосредствени перспективи в развитието на този супер популярен домашен инструмент.
Въпреки факта, че повечето от нашите читатели не само знаят какво е ReSharper, но и активно го използват в работата си, нека накратко обясним на всички останали какво представлява ReSharper днес? Съвсем накратко – какви са основните му характеристики?
Никога не бих могъл да дам кратък отговор на такъв въпрос.
Ако кажете, че ReSharper е просто добавка за Microsoft Visual Studio, това не е съвсем вярно, тъй като декомпилаторът на dotPeek е изграден на платформата ReSharper, точно както имаинструмент за команден ред ReSharperза извършване на анализ на код на сървъра (сега само на TeamCity).
От друга страна, считайте ReSharper запълноценна IDE също все още не е възможна, тъй като нямаме например дебъгер или поддръжка за системи за контрол на версиите. От основните характеристики на ReSharper бих откроил на първо място: анализ на кода, преработки, интелигентност, навигация и поддръжка наединично тестванеи всичко това за повече от 12 езика.
Сергей Шкредов, JetBrainsЗнам, че наскоро издадохте нова голяма версия с много нови неща. Какво според вас би било най-интересно и важно за един типичен .Net програмист?
За нас имаше няколко неща в новия ReSharper 7, които не можехме да пропуснем. За да поддържаме асинхронно зареждане на проекти, трябваше да преработим асинхронната инициализация на самия продукт и резултатът лично ме радва. Ние напълно стартираме нашия кодов модел, преди всички проекти (и имаме над 300 от тях) да имат време да се заредят. Искам също да отбележа страхотната работа по поддръжката на нови цветови схеми. Само над 800 икони са преначертани.
Разбира се, просто е невъзможно да се изброят всички нововъведения тук, но на първо място бих препоръчал на .Net програмистите да прочетат за новите ни договорни анотации. Това е обобщение на анотациите за нищожност и твърдения, които позволяват например да се опише зависимостта на стойността на изходящия параметър на метода TryGetValue (ключ, изходяща стойност) от върнатата стойност. Много е мощен, можете да го видите тук.
Между другото, доколкото разбирам, сте интегрирали най-новия си dotTrace от клона в най-новия ReSharper, можете ли да разкажете малко за неговите функции и иновации?
Сега в най-новия ReSharper 7 са интегрирани два от нашите продукти - това са dotTrace и dotCover. Интегрирането на dotTrace е възможността за профилиране на тестове и стартиранепроект, но интеграцията на dotCover е много по-дълбока, той може да използваПрограмата за изпълнение на модулни тестове на ReSharperи има познания за кодовия модел.
Историята на всеки от тези продукти може да бъде много дълга, както и при другите продукти на JetBrains. Затова ще кажа само, че можете да използвате пълната версия на всеки от тях за един месец безплатно и да видите доколко тези инструменти са подходящи за вашите нужди. И дори ако нещо не е наред, винаги можете да ни напишете рецензия, ние наистина го оценяваме.
Можете ли да споделите с нас колко успешен е Resharper (включително търговски)? Каква е динамиката на неговото развитие?
Мога да говоря безкрайно за успеха на ReSharper. Основният успех или дори ключът към успеха на ReSharper е екипът, който работи върху него, екип от професионални, необикновени и заинтересовани хора, с които можете да сте сигурни в успеха.
ReSharper се купува активно и много. И всяка година купуват все повече и повече. Работим, за да направим програмирането с ReSharper достъпно за всички. Например, за да идентифицираме проблеми с производителността, ние вградихме профилиращ инструмент в ReSharper и нашите потребители могат да направят моментна снимка на случващото се с производителността точно на тяхната конфигурация с един бутон.
Освен това не мога да не отбележа, че имаме много силен екип за тестване. Разбира се, програмата EAP все още е много важна за нас, но ние работим, за да гарантираме, че дори потребителите на EAP получават много висококачествен продукт. Мога да споделя, че програмата EAP за най-новия ReSharper 7 има над 10 000 потребители. ReSharper вече разполага с над 35 000 единици тестове и над 600 интеграционни теста, които изпълняват функции в Live Visual Studio. В момента работим върху автоматизирането на тестването на ефективността и азНадявам се, че някой ден ще можем да споделим нашия опит в тази област с нашите потребители.
Има мнение, че 90% от потребителите използват само 10% от функционалността на ReSharper. Това отчасти се потвърждава от нашите данни от статистиката за използване на ReSharper. Повишаването на откриваемостта сега е един от приоритетите за разработване на продукти. Ние наистина искаме нашите потребители да използват ReSharper 100%.
ReSharper само за C# има над 1000 контекстуални съвета и предложения за подобряване и автоматично преработване на вашия код. ReSharper може да се конкурира с C# компилатора в съответствие със спецификацията. Е, за всички проблеми, които срещаме по време на процеса на разработка, ние измисляме решения, които влагаме в продукта, така че в крайна сметка работата да върви и да се получава удоволствието.
Знам, че работите много тясно с Microsoft, можете ли да ни разкажете за вашето сътрудничество?
Не мога да кажа много тук поради NDA, но работим с Microsoft. По време на разработването на ReSharper 7 си сътрудничихме много тясно. Разбира се, срещаме проблеми в много аспекти на взаимодействие с Visual Studio. Основният проблем тук вероятно е, че интерфейсите за разширение във VS са фокусирани главно върху разрастването на IDE в ширина.
Сега във VS всичко е направено по такъв начин, че е лесно да стартирате нова проектна система или да внедритеЕзикова услугаза нов език. Ние, от друга страна, често трябва да заменим съществуващата функционалност. Понякога просто няма лесни начини да направите това. Като пример ще цитирам този факт: функционалността, която деактивира VS IntelliSense, когато нашият е активен, е реализирана с помощта на повече от 50 класа.
Ако говоритеЧестно казано, въпреки обективно много интересния продукт, най-болната точка на ReSharper според мен са спирачките. За да не звучи необосновано, нека ви дам няколко типични примера.
Най-често VS спирачките с активиран ReSharper се появяват с голям брой отворени раздели (вероятно изтичане на памет), а понякога се появява „грешка при компилация на проект“, която почти винаги изчезва след банално рестартиране на цялото Studio. И между другото, по мое субективно мнение, именно във версия 7 „грешката при компилация“ стана много натрапчива. Какво можете да кажете по тази чувствителна тема, какво се прави за отстраняване на тези грешки и подобряване на надеждността на работата?
Тук сте абсолютно прав, производителността традиционно е причина номер едно, поради която хората изключват ReSharper. По-точно, не бих говорил за производителност като цяло, а за спирачки, дълго отваряне на файлове и проекти, закъснения при бърз печат или замръзване на UI при изграждане на проект.
Тук можете да говорите дълго за естеството на тези забавяния. Първият голям източник на проблеми е самата архитектура на Visual Studio, изградена върху COM обекти, работещи само в нишката на потребителския интерфейс. Например, трябва напълно да дублираме целия дизайнерски модел на Studio, за да имаме достъп до него от различни нишки. При всяко стартиране пак трябва да се синхронизираме.
В допълнение, ние прекъсваме дългите дейности в нишката на потребителския интерфейс, за да не блокираме въвеждането на потребителя. Има много проблеми със събирането на боклука за поколенията. Този процес може да бъде доста дълъг, особено ако количеството на заетата управлявана памет се доближава до гигабайт. Тук единственото решение е да създадем по-малко обекти и ние постоянно наблюдавамепаметтатрафик. Случва се напълно безобидни езикови конструкции на C# да генерират буквално стотици мегабайти затварящи обекти или структури в кутии.
Между другото, сега решаваме един от тези проблеми, той е свързан с различен подход за разрешаване на препратки към асемблиране в ReSharper и в компилатора и се проявява в присъствието на проекти с различни версии на времето за изпълнение.
Завършвайки тази тема с доза здравословна самокритика - кои са най-големите слабости, които вие самите виждате в ReSharper, какви предизвикателства ви притесняват в момента?
Едно от най-слабите места е, че сме почти на 10 години. И проектът вече става някак тромав, трябва да отделим значителна част от времето за рефакторинг на подсистеми, в които с времето са се натрупали много скрити зависимости, да пренапишем и преосмислим такива модули, за да можем бързо да правим промени там, когато следващата версия на Visual Studio го изисква.
Също така имаме проблеми с промените в API, които не са много лесни за нашите автори на плъгини, които не са толкова редки, колкото преди няколко години, да преминат през тях. Въпреки че първоначално ReSharper е проектиран да бъде разширяем, почти всички подсистеми са изградени да поддържат CLR езици и цялостната функционалност на ядрото е до голяма степен фокусирана върху решаването на сложността на взаимодействието с Visual Studio и следователно претърпява чести промени. Сега обръщаме специално внимание на последователността на API, което би трябвало да позволи на повече потребители да използват ReSharper като платформа за решаване на техните бизнес проблеми.
На първо място бих искал да спомена личните лицензи като най-често срещания и достъпен вид лицензи. Ако използвате ReSharper като индивидуален разработчик или просто искате да закупите лиценз със собствените си пари иза да го използвате индивидуално в работата си, тогава персоналният лиценз е идеален за вас и цената му започва от $150 заC# издание, което е ограничено само от липсата на поддръжка на VB.Net.
И разбира се, ако сте MVP, студент, обучител или OpenSource проект, можете да получите такъв лиценз безплатно. В допълнение, почти през цялата година (около 8 от 12 месеца) имаме отворена EAP програма за следващата версия на ReSharper. Компилацията на EAP също може да се използва напълно безплатно за един месец, след което просто трябва да изтеглите и инсталирате нова компилация.