Pull to refresh

Comments 39

>> Поддержка INotifyPropertyChanged (автоматическая подстановка названий свойств)

ДАНУНА?!
Особенно забавно видеть это сейчас, ведь в C# 5.0 есть Caller Information аттрибуты.
Некоторые и на 4 не перешли
Особенно забавно видеть людей, у которых вот прям сейчас на билд-серверах крутится компилятор C# 5.0, на всех девелоперских машинах стоит VS2012 RC, а продакшн серьёзно юзает .NET Framework 4.5 :)

Ещё забавнее видеть людей, которые сталкиваясь с INPC, юзали настолько примитивные VM-объекты, что в них не было зависимостей между свойствами и из сеттера одного свойства не требовалось уведомлять об изменениях других вычисляемых свойств. Тут ни [CallerMemberName], ни PostSharp не поможет :)

А больше всех я люблю людей, которые юзают везде System.Linq.Expressions и когда их продукт разрастается, смотрят в memory-профайлер и удивляются почему простое присвоение свойству так гадит аллоациями в managed heap, а процессорное временя всё больше проваливается в GC :)

В любом случае, я рад, что проблема INPC обошла Вас стороной :)
Судя по фиче, заявленной в описании («автоматическая подстановка названий свойств»), непонятно, как оно может реализовывать сценарии, описанные во втором и третьем абзаце. Да и в каменте я подразумевал что C# 5.0 уже почти на подходе, а не то, что «C# 5.0 стоит у всех».
Содержимое топика писал не представитель JetBrains, за его содержимое я не могу ответить.

R# 7.0 предлагает строгую типизацию строковых литералов, передаваемых в notify-метод, а это значит что Вы получаете автоматический rename и рефакторинги, навигацию сквозь этот строковой литерал, валидацию модификатора доступа таких свойств (INPC-свойства обязаны быть публичными), конвертирование обычного свойства/автосвойства в свойство с нотификацией в одно контекстное действие, массовое создание свойств с нотификациями из полей и конечно же code completion.

Всё это позволит с лёгкостью добавлять дополнительные нотификации в сеттер (второй абзац), а R# будет осуществлять типизацию, следить за rename'ами и удалениями свойств.

Более того, если notify-метод получает expression вместо строки (третий абзац), то мы помогаем вставлять в сеттер свойства нотификацию с () => Property или x => x.Property в качестве аргументов.
Классно, так бы и стоило ответить вместо попытки подколоть в первом комментарии, ведь комментарий писался исходя из того, что есть в топике.
Точно по такой же причине, по которой мы разрабатываем ReSharper с помощью самых последних внутренних билдов ReSharper — чтобы непрерывно контроллировать качество и выявить как можно больше проблем силами самой команды. У Microsoft такой же подход, они многими командами сидели на VS11 за месяцы до выхода в паблик Developer Preview.
На сколько я понял, фича реализована для распространенных фреймворков, для своего кода нужно юзать аннотации (NotifyPropertyChangedInvocatorAttribute)
Совершенно верно. Анализ множества INPC-фреймворков показал, что выявить общий «паттерн» notify-методов не представляется возможным (везде разные базовые классы, разные имена методов, разные имена и порядки параметров, разные подходы), поэтому собственные реализации классов типа «ViewModelBase» придётся проаннотировать атрибутом [NotifyPropertyChangedInvocator]. Это не требует никаких бинарных зависимостей, реализацию этого атрибута можно просто скопировать себе в проект их наших настроек -> Code annotations -> Copy default implementation to clipboard.
Слоган в тему, хотя я уже привык к новому интерфейсу :)
Помня как вела себя 6 версия сразу после выхода, я подожду 7.2
До релиза я «сидел» на EAP. Если не считать пары «сломанных» ночных билдов — полёт нормальный.
ну, судя по вчерашнему срочному фиксу и переписке в твиттере — я бы тоже посидел хотя бы до 7.1. К тому же апгрейдиться опять за деньги… Часто как-то и дорого.
Добрый день.
«Срочный фикс» относился не к самому решарперу, а к нашему e-shop. Была небольшая проблема, связанная с тем, что пользователи не могли купить апгрейд-лицензию с 6.х на 7.х C# Edition. Уже исправили.
За ту пару «сломанных» билдов можно минусануть лично меня… :)
> Новые шаблоны и инструменты для разработки под Win RT
Класс! Да, приятно, что такой продукт делают соотечественники.
А этим занималась Питерская контора, и я присутствовал на одном из дней разработки :)
Интересно, насчет производительности хоть что-то решено было? или как в предыдущих версиях — нормально работает при солюшене в 5-10 проектов, не более?
по-моему, это уже какая-то байка. постоянно работаю с солюшенами с 30 проектами и более. проблема решается достаточно мощным компьютером. и даже с учетом возможных тормозов, код пишется в разы быстрее и удобнее благодаря решарперу, так что оно того стоит.
Я иногда работаю с солюшеном ReSharper на лаптопе (конечно же с самим ReSharper'ом), 300 проектов, лаптоп с Core i3 @ 2.5Ghz, 8Gb и SATA-II SSD — работу можно назвать близкой к комфортной.

В версию 7.0 мы встроили движок dotTrace, так что теперь вы можете оперативно снять снепшотик (ReSharper — Help — Profile Visual Studio) и буквально за пару кликов заслать его к нам, мы починим-подкрутим и все будут счастливы!
182 проекта в общем солюшене, Core i5 2310, 8Gb RAM — полет нормальный :) Запускается по личным ощущениям на ~20% дольше, но потом разница практически незаметна
Кстати, в VS2012 появилась асинхронная загрузка solution'ов — если раньше 300 проектов грузились аж минуты 3-5, то сейчас адские тормоза наблюдаются секунд 30 и можно уже начинать работать, а солюшен продолжает загружаться.
Это отлично, как раз собираемся переходить на VS2012 :)
Fujitsu lifebook nh570. Core i5, 8 gb. с решарпером студия начинает жрать в 2 раза больше памяти. Три открытых студии с солюшенами в 30-40 проектов делают работу за компьютером невыносимой.
Навскидку могу предположить, что рост памяти студии сублинеен при увеличении числа проектов… Сейчас не поленился открыть 2 солюшена: один на 50 проектов, второй — на 182. Проекты из солюшена #1 — это подмножество проектов из солюшена #2. Далее я по полчаса работал в каждом из них, в.т.ч. используя функции решарпера. Итог: солюшен #1: 725 MB; солюшен #2: 841 MB;
АААА! =( Ну когда же они сделают тоже но для С++ =((
/* прям реально крик души */
Абсолютно аналогично! VS + Visual Assist X даже близко не дают такого удобства, эх…
и не дадут. сама платформа C++ дает меньше возможностей для анализа кода. нет того же reflection, например.
Да я и сам это прекрасно понимаю. Но легче от этого не становится, в особенности, когда приходится ковырять плюсовый код после длительной работы на C#
Решарпер анализирует cs файлы, рефлекшен ему максимум для внешних либ нужен. На С++, как мне кажется, гораздо большие проблемы доставляют шаблоны, которые являются по сути встроенным тьюрингполным языком.
Незаменимый инструмент! Спасибо громадное разработчикам за их труд.
Sign up to leave a comment.

Articles