Догадываюсь, что вопрос затерли до дыр, аж профильный форум создали. Но вопрос (для меня) остается открытым.
У меня было несколько таких кейсов:
— Устраиваюсь в солидную контору на высокий рейт. Интервью. После задачки на перекладывание из массива в массив, летит вопрос "Do you use ReSharper?", с повелительной интонацией. Я замялся, сказал что стоит в студии (что отключен всегда — не стал говорить). Затем работая в этой конторе, в документациях типа "как развернуть у себя среду для тестирования" — первым пунктом идет — "Установите ReSharper". Не устанавливал. Все развернул, недоумеваю.
— Кейс #2. Взяли лидом в команду из 25 человек. И дня не прошло, чтобы кто-нибудь из них не заныл — "Я без решарпера, как без рук! Купить мне лицензию наконец...ААА!". Недоумеваю. Спрашивать причины воя не стал, дабы сохранить дружный коллектив.
— Еще несколько случаев, в том числе в публичных интервью и блог-постах уважаемых людей пишут, что ReSharper — must have, а без него — студия — это текстовый редактор. Так то.
У меня вопрос. Я сижу в студии с версии 6.0, года так с 2001-го. Ставил все версии. Сейчас на 2019. У меня в голове не укладывается, что там можно сделать такого, чего сама студия не может??
Я ставил, смотрел: сразу появилась куча всякой дополнительной мишуры в редакторе, время загрузки студии увеличилось, в целом тормоза. Привычные Хоткеи перебиваются и начинается какая-то вакханалия вместо стандартных окон.
Захожу в Tools->Extensions, нажимаю Disable, чисто на случай если всплывет какая-то киллер фича, которая в разы ускорит разработку и этого не будет в самой VS.
Здравствуйте, ukrspecs, Вы писали:
U>Чего я не понимаю в мире разработки на C#?
Вы наверное сразу всё делаете правильно, а потом не переделываете никогда. И всё помните. Вам ни Find Usages не нужен, ни переразбивка проекта на части и неймспейсы, ни создание интерфейса для какого-нибудь класса на 50 методов (фасада к куче других сервисов, а интерфейс нужен для создания кэширующей прослойки).
Здравствуйте, vorona, Вы писали:
V>Это все есть в студии
Согласен. Часто решарпер хвалят за умелый Find Usages, но в студии в большинстве случаях мне хватает Find All References/Go To Implementation.
Эта парочка пасует только в случае, если надо провалиться в метод, реализованный в неизвестном производном классе:
func(IBaseObject obj)
{
// Вот здесь не получается дает провалиться в реализацию ToString(), потому что студия не может определить,
// экземпляр какого именно конкретного класса был передан в метод
obj.ToString();
}
По этой причине особенно тяжело разбираться в проектах, где широко используются IoC контейнеры.
Но там и решарпер не поможет.
Здравствуйте, ukrspecs, Вы писали:
U>Но вопрос (для меня) остается открытым.
Брат, ты не один! Решарпер действительно БЫЛ когда-то полезным дополнением (напр, к студии 2005), потому что саму студию писали посредственности. Но сейчас, за годы улучшений, Студия получила кучу плюшек и теперь Решарпер в ней как пятое колесо — ничего, кроме тормозов не привносит.
Так что да, всех "решарпистов" можешь посылать прямиком в ЖетБрынзу: "Ребят, любой каприз за ваши деньги!". Сами купят, сами помучаются, сами понесут обратно.
Здравствуйте, Kolesiki, Вы писали:
K>Брат, ты не один! Решарпер действительно БЫЛ когда-то полезным дополнением (напр, к студии 2005), потому что саму студию писали посредственности. Но сейчас, за годы улучшений, Студия получила кучу плюшек и теперь Решарпер в ней как пятое колесо — ничего, кроме тормозов не привносит.
Без Решарпера в студии 2019 можно обойтись. По крайней мере, на небольших проектах. Но вот касательно улучшений... Я как-то жаловался на неработающий XML Schema Explorer. По сообщениям, его обещали починить в версии 16.4. У меня сейчас 16.4.3, а он как не работал, так и не работает. Точнее, я однажды сделал студии repair, после чего мне удалось его запустить. Но после того, как я закрыл студию, а потом снова открыл, он снова объявил забастовку. Мне теперь что, каждый раз перед открытием схемы repair делать?
Толку с тех плющек, если они работают через нее (если вообще работают).
Здравствуйте, ukrspecs, Вы писали:
U>Чего я не понимаю в мире разработки на C#?
Он нужен этим супер-продуктивным чувакам, вываливающим горы кода каждый день, у которых каждый метод вызывает другой метод, который вызывает другой метод и так далее, три страницы установки значений свойствам в каждом классе и прочие непотребности, которые руками лабать утомительно.
Студия одинаково тормозит на таком коде что с Решарпером, что без Решарпера, поэтому тормозов Решарпера они не замечают.
Здравствуйте, ukrspecs, Вы писали:
U>Чего я не понимаю в мире разработки на C#?
Кстати, для С++ также. Я выиграл лицензию на конференции, поставил себе и дальше всё как у тебя: всё мигает, мограет, пёстро, хоткеи не работают, тормоза, IDE почему-то перестало видеть инклуды к ffmpeg (компилятор видит). Немножко помучался, удалил и всё. Проект кроссплатформенный под Windows я работаю в MS VS, под Линуксом в QtCreator, все проекты на CMake. Вернулся к привычным инструментам.
Здравствуйте, ukrspecs, Вы писали:
U>Чего я не понимаю в мире разработки на C#?
Решарпер интересен не синтаксисом, интеллисенсом, навигацией или тестовой средой. Это все второстепенное.
Основное — в нем очень продвинутый рефакторинг. Настолько крутой, что можно писать код не в терминах "строчка, еще строчка", а работать в терминах парадигмы.
Это позволяет модифицировать и окультуривать ненужный, лишний, устаревший, неоптимальный код сохраняя сильные гарантии работоспособности.
Например, есть запутаный метод килобайт около 500, понятный одному автору на момент написания, да и то, автор уволился. Разрабы вплоть до сеньора боятся туда лезть, ни тестов, ни документации, ничего.
Как быть?
Вот представь кейс, когда внутренности этого метода надо отдать наружу в виде внятного АПИ. Решарпер позволяет решать такие задачи намного эффективнее, нежели переписывать с нуля.
Например, возможный подход — конвертируем метод в класс, режем на кусочки, двигая по иерархии, перемещаем методы между классами, выделяем интерфейсы, унифицируем, вытесняем лишнее в экстеншны, вводим чтото навроде дсл и все это в принципе без набора какого либо существенного количества кода руками.
Еще и тесты появятся сами собый, как побочный эффект.
Особо умные конечно намекают: "А зачем такое было писать?" Странно, но когда этот код кем то создавался и протухал, прокисал годами, такие вопросы не интересовали Почему ?
Здравствуйте, Vladek, Вы писали:
V>Он нужен этим супер-продуктивным чувакам, вываливающим горы кода каждый день, у которых каждый метод вызывает другой метод, который вызывает другой метод и так далее, три страницы установки значений свойствам в каждом классе и прочие непотребности, которые руками лабать утомительно.
Уже давно проверено, что эти супер-продуктивные чуваки вываливают почти столько же в обычном текстовом редакторе. Просто врайт-онли код пишется крайне быстро.
Нет никакой проблемы ускорить написание в десятки раз в ущерб сопровождению.
Любой код имеет цикл жизни — пишем, осмысливаем, адаптируем новые требования, фиксим баги и так много раз по кругу пока сохраняется экономическая целесообразность.
Рефакторинг нужен для того, что бы управлять этим циклом жизни кода. В противном случае всё будет в ущерб майнтенансу — трудозатраты все больше и больше, пока это не перестаёт быть экономически эффективным. При чем эффект нарастает лавиной. Пока есть деньги — можно компенсировать разрабами. Но это не на долго. А вот переписывание с нуля обычно даёт жосцкий фейл,или, в лучшем случае, те же проблемы, но в профиль.
Здравствуйте, Слава, Вы писали:
U>>Чего я не понимаю в мире разработки на C#?
С>Вы наверное сразу всё делаете правильно, а потом не переделываете никогда. И всё помните. Вам ни Find Usages не нужен, ни переразбивка проекта на части и неймспейсы, ни создание интерфейса для какого-нибудь класса на 50 методов (фасада к куче других сервисов, а интерфейс нужен для создания кэширующей прослойки).
Скорее товарищ имеет дело только со свежим кодом и в основном своим или своей команды.
Здравствуйте, Kolesiki, Вы писали:
U>>Но вопрос (для меня) остается открытым.
K>Брат, ты не один! Решарпер действительно БЫЛ когда-то полезным дополнением (напр, к студии 2005), потому что саму студию писали посредственности. Но сейчас, за годы улучшений, Студия получила кучу плюшек и теперь Решарпер в ней как пятое колесо — ничего, кроме тормозов не привносит.
Узнаю разработчика-одиночку c идеальной памятью, который реализует закат солнца вручную
Здравствуйте, Ikemefula, Вы писали:
I>Решарпер интересен не синтаксисом, интеллисенсом, навигацией или тестовой средой. Это все второстепенное. I>Основное — в нем очень продвинутый рефакторинг.
Можешь написать из своего опыта, каких именно рефакторингов не хватает в студии?
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали:
U>>Чего я не понимаю в мире разработки на C#?
I>Особо умные конечно намекают: "А зачем такое было писать?" Странно, но когда этот код кем то создавался и протухал, прокисал годами, такие вопросы не интересовали Почему ?
Это какой-то абстрактный кейс, который в любом случае должен звучать иначе "лошадь двигает телегу, а не наоборот". Т.е. в любом случае, разбивать, вычленять и рефакторить нужно своей головой. То что вместо Ctrl+X — Ctrl+V и еще пары хоткеев, я кликну правой кнопкой мыши и мне вывалится новый класс и методы...ну оно того не стоит.
В общем нет сегодня весомых аргументов в пользу Решарпера. А те кто на него давно подсел, уже по инерции вырубают хоткеи студии и даже не смотрят что в ней нового.
На реальном проекте, это превращается в дикую попоболь, когда менеджеры зажимают бюджет на недешевую лицензию решарпера.
Здравствуйте, ukrspecs, Вы писали:
U>Здравствуйте, Ikemefula, Вы писали:
I>>Здравствуйте, ukrspecs, Вы писали:
U>>>Чего я не понимаю в мире разработки на C#?
I>>Особо умные конечно намекают: "А зачем такое было писать?" Странно, но когда этот код кем то создавался и протухал, прокисал годами, такие вопросы не интересовали Почему ?
U>Это какой-то абстрактный кейс, который в любом случае должен звучать иначе "лошадь двигает телегу, а не наоборот". Т.е. в любом случае, разбивать, вычленять и рефакторить нужно своей головой. То что вместо Ctrl+X — Ctrl+V и еще пары хоткеев, я кликну правой кнопкой мыши и мне вывалится новый класс и методы...ну оно того не стоит.
Ну естественно план рефакторинга надо продумать до того как делать,
но при чем здесь это? Но после понимания того что есть и как это нужно изменить,
нужно же в большой кодовой базе "дохрена" ручками поработать, если не будет переимования методов,
классов, выделение методов, выделения интерфейсов и т.д.
Неужели эту "мартышкину" работу, череватую опечатками, забытыми строчками и т.д.
хочется делать самому и инструмент автоматизирующий все это из раздела "ненужно"?
ReSharper действительно не нужен.
Впрочем VS тоже возможно и не нужен.
Уже довольно долго сижу на Rider от JetBrains и за исключением некоторых вещей, все в нем устраивает.
Т.е. получаем мощь ReSharper и по сути стандартную IDE, которая которая работает как и другие продукты от JetBrains.
Поскольку приходится иметь с зоопарком разных языков, стандартный IDE очень сильно помогает.
32 битная сущность VS уж сильно достает, а в связке с ReSharper, который на самом деле весьма полезен,
получается совсем плохо.
Но слава богу есть Rider и другие продукты от JetBrains
Здравствуйте, Nuzhny, Вы писали:
N>Кстати, для С++ также. Я выиграл лицензию на конференции, поставил себе и дальше всё как у тебя: всё мигает, мограет, пёстро, хоткеи не работают, тормоза, IDE почему-то перестало видеть инклуды к ffmpeg (компилятор видит). Немножко помучался, удалил и всё.
Здравствуйте, Мирный герцог, Вы писали:
МГ>пацаны просто не осилили греп и регекспы *trollface.ico*
Спасибо поблевал. Наблюдаю периодически как адепты грепа мудохаются.
— Эти товарищи которые студию делают досих пор не осилили функцию find all references. Считаю что это косяк со стороны MSVS
В решарпере это есть.
— boost tests решарпер понимает (не существенная фишка но приятно). правда почему то она у нас перестала работать
— да и носом в косяки тыкает (кажется он а не сама студия из каропки). Недавно баг нашел на ревью коллеги благодаря ему (кажется всетаки решарпер это нашел) и баг серьезный — он там кое что отлымывал.
всякие лишние инлайны и лишние std::move(которые отменяют copy elision) тоже носом тыкает (кажется он а не сама MSVS)
— в отладке показывает как в идее какие переменные меняются прямо в тексте. довольно удобно
вобщем зря парни на него погнали.
единственно что да, вроде притормаживает
Здравствуйте, sergeya, Вы писали: S>Можешь написать из своего опыта, каких именно рефакторингов не хватает в студии?
Мне, например, не хватает выделения базового класса. То есть смотрим на класс — хотим его распилить на (абстрактную) базу и потомка. Упс, студия умеет только extract interface, и только по публичным методам.
Это не работает для типичного случая, когда у нас есть класс с protected/internal методами.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, bkat, Вы писали:
B>ReSharper действительно не нужен. B>Впрочем VS тоже возможно и не нужен.
Я помню ситуацию так:
Пока JetBrains с Microsoft не конкурировали на поле IDE для C#, Студия не пытался конкурировать с Решарпером. Microsoft поддерживал существующую экосистему (они прям открытым текстом где-то про это писали). Когда JetBrains решили потеснить Microsoft на поле IDE, Студия резко начала реализовывать полезный функционал Решарпера у себя. Не так быстро как хотелось бы, но раньше процесс вообще не шёл, а потом вдруг пошёл и не прекращается.
Сами ли JetBrains решили, что надо сделать новую IDE; или с приходом Розлина поняли, что положение Решарпера как платного must-have-плагина потенциально под угрозой — не суть важно.
B>Уже довольно долго сижу на Rider от JetBrains и за исключением некоторых вещей, все в нем устраивает.
С противоположной стороны ситуация сейчас выглядит похоже. В современной Студии стало можно обходиться без Решарпера. За исключением некоторых вещей, всё в ней устраивает. Хотя если долго пользовался Решарпером, мышечная память не даёт так просто взять и перестать. Перейти на Райдер может оказаться проще. Хотя от Райдера мне не удалось добиться раскраски кода как в VS.
Все так, если смотреть с позиции когда VS — это единственный тул и 32 битность IDE не является проблемой.
На текущей фирме используется стек разных технологий и если сознательно не ограничивать себя одной технологией,
то есть возможность работать на всем от c/c++ для встроенных систем, до Angular клиентами и приложениями для мобилок и сервисами на Java / .net core
И вот тут оказывается, что одна философия для разных IDE (Rider, IntelliJ, CLion, WebStorm, AndroidStudio,...) оказывается огромным плюсом.
Ну а то, что VS стоит особняком, то это его беда...
Короче даже предпочитая .net реально не вижу нужды в VS.
Здравствуйте, alexzzzz, Вы писали:
A>Сами ли JetBrains решили, что надо сделать новую IDE; или с приходом Розлина поняли, что положение Решарпера как платного must-have-плагина потенциально под угрозой — не суть важно.
Кстати, JetBrains ну совсем не новички в разработке IDE.
Скорее они поняли, что 32-битность VS не дает им шанса развивать ReSharper
и лучше упаковать его в другой продукт.
Здравствуйте, ukrspecs, Вы писали:
I>>Особо умные конечно намекают: "А зачем такое было писать?" Странно, но когда этот код кем то создавался и протухал, прокисал годами, такие вопросы не интересовали Почему ?
U>Это какой-то абстрактный кейс, который в любом случае должен звучать иначе "лошадь двигает телегу, а не наоборот". Т.е. в любом случае, разбивать, вычленять и рефакторить нужно своей головой. То что вместо Ctrl+X — Ctrl+V и еще пары хоткеев, я кликну правой кнопкой мыши и мне вывалится новый класс и методы...ну оно того не стоит.
Хороший рефакторинг это как правило N-проверенных вариантов — попробовал, вышла фигня, откатил, сделал еще один и так по кругу.
Найденное решение это первая итерация. Обычно надо штук пять таких итераций, что бы цель была достигнута.
Что бы такое сделать быстро, нужно чтото мощнее чем "перенабираем код руками". Ручная работа это постоянные огрехи из за особенностей человеческого внимания. Автоматический инструмент ошибается на порядки реже. Соответсвенно шансов у ручного рефакторинга нет ни единого.
Здравствуйте, sergeya, Вы писали:
I>>Решарпер интересен не синтаксисом, интеллисенсом, навигацией или тестовой средой. Это все второстепенное. I>>Основное — в нем очень продвинутый рефакторинг.
S>Можешь написать из своего опыта, каких именно рефакторингов не хватает в студии?
Проще написать, какие есть в студии — их ажно целый десяток!
Здравствуйте, ukrspecs, Вы писали:
U>- Кейс #2. Взяли лидом в команду из 25 человек. И дня не прошло, чтобы кто-нибудь из них не заныл — "Я без решарпера, как без рук! Купить мне лицензию наконец...ААА!". Недоумеваю. Спрашивать причины воя не стал, дабы сохранить дружный коллектив.
Вот интересно, каким образом такой простой вопрос может порушить дружный коллектив? Вы за кого коллег принимаете?
Здравствуйте, ukrspecs, Вы писали:
U>Чего я не понимаю в мире разработки на C#?
Интересно, как вы решаете задачу "для данного property найти все места в коде, где вызывается его сеттер"?
Делаете find all references, а потом руками отфильтровываете сеттеры / геттеры?
Здравствуйте, CreatorCray, Вы писали:
МГ>>пацаны просто не осилили греп и регекспы *trollface.ico* CC>Спасибо поблевал. Наблюдаю периодически как адепты грепа мудохаются.
когда я был мал и глуп, и не видал больших залуп, я тоже очень любил VAX, но однажды я попал на легаси проект со среднего размера кодобазой (1 млок+), который очень хотел быть отрефакторен, и понял, что греп и регекспы находят много интересного там, до чего вакс просто физичски не может дотянутся — комментарии в коде, препроцессируемый код, генерируемый код, код на разных языках, итп итд. Пришло просветление. С тех пор я на вакс и прочие интеллисенсы смотрю несколько иначе.
Здравствуйте, Zhendos, Вы писали:
Z>Ну естественно план рефакторинга надо продумать до того как я делать, Z>но при чем здесь это? Но после понимания того что есть и как это нужно изменить, Z>нужно же в большой кодовой базе "дохрена" ручками поработать, если не будет переимования методов, Z>классов, выделение методов, выделения интерфейсов и т.д. Z>Неужели эту "мартышкину" работу, череватую опечатками, забытыми строчками и т.д. Z>хочется делать самому и инструмент автоматизирующий все это из раздела "ненужно"?
Чеклист от Microsoft:
Переименование методов и классов — есть (причем без всяких popup окон)
Выделение интерфейсов и методов — не уверен, правильно ли понимаю, так но за 20 лет наверное пару раз нужно было. Тогда я создаю интерфейс, делаю copy-paste из класса, убираю лишнее, затем в наследнике "Ctrl+." и методы генерятся. UPD: Да, это такая важная фича, что я даже не знал про то, что она есть из коробки в VS https://prnt.sc/qvyueo
Это must-have функционал?
Здравствуйте, bkat, Вы писали:
B>ReSharper действительно не нужен. B>Впрочем VS тоже возможно и не нужен.
B>32 битная сущность VS уж сильно достает, а в связке с ReSharper, который на самом деле весьма полезен, B>получается совсем плохо.
B>Но слава богу есть Rider и другие продукты от JetBrains
Rider — сырой.
Посмотрел бы я на вас, как вы например дебажите Xamarin.iOS приложение в нем. Или публикуете в Azure.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали:
I>>>Особо умные конечно намекают: "А зачем такое было писать?" Странно, но когда этот код кем то создавался и протухал, прокисал годами, такие вопросы не интересовали Почему ?
U>>Это какой-то абстрактный кейс, который в любом случае должен звучать иначе "лошадь двигает телегу, а не наоборот". Т.е. в любом случае, разбивать, вычленять и рефакторить нужно своей головой. То что вместо Ctrl+X — Ctrl+V и еще пары хоткеев, я кликну правой кнопкой мыши и мне вывалится новый класс и методы...ну оно того не стоит.
I>Хороший рефакторинг это как правило N-проверенных вариантов — попробовал, вышла фигня, откатил, сделал еще один и так по кругу. I>Найденное решение это первая итерация. Обычно надо штук пять таких итераций, что бы цель была достигнута.
I>Что бы такое сделать быстро, нужно чтото мощнее чем "перенабираем код руками". Ручная работа это постоянные огрехи из за особенностей человеческого внимания. Автоматический инструмент ошибается на порядки реже. Соответсвенно шансов у ручного рефакторинга нет ни единого.
Первый раз про такое слышу. Про N вариантов рефакторига. Хотя может если бюджет резиновый — то можно изголяться. Ручная работа джуна — она и с решарпером будет не очень. Бородатый лид и в notepad++ справится при желании.
К слову, реальный случай сейчас. Пишу Xamarin.iOS приложение. Проблема в то, что в VS на винде писать удобнее — но дебажить мееееделенно. А в VS на Маке — писать больно, но запускается все за секунды. И вот VS для Mac — это такой Visual Studio Code, с минимум дополнительного функционала. Без всяких решарперов и минимум рефакторинга. И ничего, и там справляюсь.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали:
U>>- Кейс #2. Взяли лидом в команду из 25 человек. И дня не прошло, чтобы кто-нибудь из них не заныл — "Я без решарпера, как без рук! Купить мне лицензию наконец...ААА!". Недоумеваю. Спрашивать причины воя не стал, дабы сохранить дружный коллектив.
I>Вот интересно, каким образом такой простой вопрос может порушить дружный коллектив? Вы за кого коллег принимаете?
Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты, либо имели бы элитную касту с решарпером, а вновь прибывшим и джунам оставалось бы только облизываться, если он им также необходим. Разумеется вопрос в духе "А зачем тебе решарпер?", вызвал бы поток коллективного сознания, с заведомо проигрышным для меня и компании результатом. Поэтому лучше было не задевать лишний раз этих разрабов.
Здравствуйте, blp, Вы писали:
blp>Здравствуйте, ukrspecs, Вы писали:
U>>Чего я не понимаю в мире разработки на C#? blp>Интересно, как вы решаете задачу "для данного property найти все места в коде, где вызывается его сеттер"? blp>Делаете find all references, а потом руками отфильтровываете сеттеры / геттеры?
Да, именно так и делаю. Причем разглядеть места с "Property = " не сложно. Хотя хотел бы такую фичу из коробки, да.
Здравствуйте, Слава, Вы писали:
С>Здравствуйте, ukrspecs, Вы писали:
U>>Чего я не понимаю в мире разработки на C#?
С>Вы наверное сразу всё делаете правильно, а потом не переделываете никогда. И всё помните. Вам ни Find Usages не нужен, ни переразбивка проекта на части и неймспейсы, ни создание интерфейса для какого-нибудь класса на 50 методов (фасада к куче других сервисов, а интерфейс нужен для создания кэширующей прослойки).
ОК.
— Вы наверное сразу всё делаете правильно. По крайней мере стараюсь, а вы разве нет?
— Find Usages меня устраивают, те что есть в VS. Если прям все-все искать — то стандартный поиск по solution тоже ок.
— Переразбивка проекта на части и неймспейсы — делаю руками. Хотя не любитель трогать, то что работает. И новых проектов тоже хватает.
— Создание интерфейса для какого-нибудь класса на 50 методов. Тоже редко такая задача появляется. Привык руками делать, но можно и так https://prnt.sc/qvyueo
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Слава, Вы писали:
U>>>Чего я не понимаю в мире разработки на C#?
С>>Вы наверное сразу всё делаете правильно, а потом не переделываете никогда. И всё помните. Вам ни Find Usages не нужен, ни переразбивка проекта на части и неймспейсы, ни создание интерфейса для какого-нибудь класса на 50 методов (фасада к куче других сервисов, а интерфейс нужен для создания кэширующей прослойки).
I>Скорее товарищ имеет дело только со свежим кодом и в основном своим или своей команды.
Я понимаю ваш сарказм. Но в былые времена мне в основном доставался код от ребят из чайных республик, которые сбежали из компании, потому что его невозможно было поддерживать. И там выгребал, за 10 баксов в час.
Сейчас времена поменялись и стараюсь брать только новые проекты. Через 14 лет на фрилансе можно-то, раз спрос есть
Здравствуйте, ukrspecs, Вы писали:
U>Здравствуйте, blp, Вы писали:
blp>>Делаете find all references, а потом руками отфильтровываете сеттеры / геттеры?
U>Да, именно так и делаю. Причем разглядеть места с "Property = " не сложно. Хотя хотел бы такую фичу из коробки, да.
В 2019 студии такая фича есть из коробки. В окне Find references есть колонка Kind, там можно выставить фильтр в Read/Write.
Ну и если у такого свойства
public class MyClass
{
public int MyProperty { get; set; }
}
поставить курсор на get или set и нажать Shift+F12 то оно само отфильтрует то что нужно.
Здравствуйте, ukrspecs, Вы писали:
U>Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты, либо имели бы элитную касту с решарпером, а вновь прибывшим и джунам оставалось бы только облизываться, если он им также необходим. Разумеется вопрос в духе "А зачем тебе решарпер?", вызвал бы поток коллективного сознания, с заведомо проигрышным для меня и компании результатом. Поэтому лучше было не задевать лишний раз этих разрабов.
Вот-вот. Странные коллеги — простой кейс может спровоцировать поток сознания Это вы, д`Артаньян? Не узнаю в гриме
U>Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты
Стоимость решарпера — 449 евро в год. То есть 37 евро в месяц. Вы там за еду работали?
На самом деле у Решарпера довольно много мелких вещей к которым привыкаешь и если работаешь без него тратишь лишнее время .
Как минимум быстрый поиск всего, текста, метолов, классов.
В студии встроенного пока нет.
Далее рефакторинг кода.
У решарпера вагон правил, которых в студии нет.
Коллеги, которые работают без него, тратят довольно много времени когда нужно что-нибудь поменять в коде и в итоге получается кол, который двумя нажатиями можно было легко улучшить.
Подсказки и предложения в коде.
Без этого как без рук.
В студим есть немного правил настраиваемых через. editorconfig и есть дополнение Roslynator но это всё не дотягивает до того что есть в решарпере.
Ну и мелочи:
Подсветка protobuf, поддержка VB.NET, JS, TS.
Удобный запускатель тестов.
И много всего.
Конечно можно и обойтись без него как и адепты VIM прекрасно работают с кодом, но зачем лишать себя удобств?
U>Чеклист от Microsoft: U>Переименование методов и классов — есть (причем без всяких popup окон) U>Выделение интерфейсов и методов — не уверен, правильно ли понимаю, так но за 20 лет наверное пару раз нужно было. Тогда я создаю интерфейс, делаю copy-paste из класса, убираю лишнее, затем в наследнике "Ctrl+." и методы генерятся. UPD: Да, это такая важная фича, что я даже не знал про то, что она есть из коробки в VS https://prnt.sc/qvyueo U>Это must-have функционал?
Да, регулярно с этим сталкиваюсь, с r# за пару кликов все это можно сделать.
blp>>Делаете find all references, а потом руками отфильтровываете сеттеры / геттеры?
U>Да, именно так и делаю.
Понятно. Люди, которые просят решарпер такие вещи считают дикостью — это как есть руками, зная про существование вилок и ложек.
>Причем разглядеть места с "Property = " не сложно.
>Хотя хотел бы такую фичу из коробки, да.
В решарпер таких мелочей очень много, эта — просто самый простой пример. Я слышал в новой VS ее осилили сделать , правда по функционалу она все равно до решарперлвской не дотягивает.
Здравствуйте, Mamut, Вы писали:
U>>Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты
M>Стоимость решарпера — 449 евро в год. То есть 37 евро в месяц. Вы там за еду работали?
449 — это уже Ultimate с Rider.
А так еще дешевле на самом деле.
Здравствуйте, Mamut, Вы писали:
U>>Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты
M>Стоимость решарпера — 449 евро в год. То есть 37 евро в месяц. Вы там за еду работали?
Работали ли вы когда нибудь в крупной аутсорс компании, у который еще более крупный заказчик? Объяснить крупнейшей нефтяной компании в мире, что нам нужно дополнительных 500*25=12.5к евро на какой-то решарпер дорого стоит. Нужно вопрос поднимать по вертикали менеджеров и так далее, никто этим заниматься не собирался.
Здравствуйте, ukrspecs, Вы писали:
U>Здравствуйте, Mamut, Вы писали:
U>>>Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты
M>>Стоимость решарпера — 449 евро в год. То есть 37 евро в месяц. Вы там за еду работали?
U>Работали ли вы когда нибудь в крупной аутсорс компании, у который еще более крупный заказчик? Объяснить крупнейшей нефтяной компании в мире, что нам нужно дополнительных 500*25=12.5к евро на какой-то решарпер дорого стоит. Нужно вопрос поднимать по вертикали менеджеров и так далее, никто этим заниматься не собирался.
Что-то тут с ценами напутали.
Мы ведь про C#, вот ценник:
Здравствуйте, ukrspecs, Вы писали:
U>- Кейс #2. Взяли лидом в команду из 25 человек.
На 25 чловек один лид? Сурово.
U> И дня не прошло, чтобы кто-нибудь из них не заныл — "Я без решарпера, как без рук! Купить мне лицензию наконец...ААА!".
В чем проблема купить лицензию?
U>У меня вопрос. Я сижу в студии с версии 6.0, года так с 2001-го. Ставил все версии. Сейчас на 2019. У меня в голове не укладывается, что там можно сделать такого, чего сама студия не может??
Неверно поставленный вопрос. Верный вопрос — чем отличается средний код, написанный с решарпером от написанного без него?
Слышал когда нибудь такое выражение — ReSharper clean code?
Здравствуйте, ukrspecs, Вы писали:
U>- Find Usages меня устраивают, те что есть в VS. Если прям все-все искать — то стандартный поиск по solution тоже ок.
Скорость и точность, мягко говоря, не та.
U>- Переразбивка проекта на части и неймспейсы — делаю руками.
Ну да, отличиный способ делать какую то работу долго, при этом не напрягаясь. Солдат спит, служба идет.
U> Хотя не любитель трогать, то что работает. И новых проектов тоже хватает. U>Привык руками делать
Аутсорс, да? Ну тогда и правда, особо бороться за качество кода смысла нет. Работает — и ладно.
Здравствуйте, alexzzzz, Вы писали:
A>Когда JetBrains решили потеснить Microsoft на поле IDE, Студия резко начала реализовывать полезный функционал Решарпера у себя.
Нет. Процесс начался сильно раньше. Просто какое то время у МС были более первоочередные задачи типа написания Розлина.
Здравствуйте, Sharov, Вы писали:
M>>Стоимость решарпера — 449 евро в год. То есть 37 евро в месяц. Вы там за еду работали?
S>Откуда такие цифры? Я ~500р. в месяц за бандл плачу..
Я и за 5 рублей не куплю. Если мне будут платить за него 1000 в месяц — то, может, и подумаю.
Здравствуйте, ukrspecs, Вы писали:
С>>Вы наверное сразу всё делаете правильно, а потом не переделываете никогда. И всё помните. Вам ни Find Usages не нужен, ни переразбивка проекта на части и неймспейсы, ни создание интерфейса для какого-нибудь класса на 50 методов (фасада к куче других сервисов, а интерфейс нужен для создания кэширующей прослойки).
U>ОК. U>- Вы наверное сразу всё делаете правильно. По крайней мере стараюсь, а вы разве нет?
Смешно и наивно.
Правильно — это только сейчас. А сразу, как приступим к новыми фичам в следующей версии, уже автоматически неправильно.
Поменялись требования в ходе разработы — снова становится неправильно.
Поменялась команда — скажем, разбили на три локации, дизайн будет ломаться хотите вы там у себя или нет. Отчуждаем, скажем, ядро или плагины — это долгая и тщательная хирургия, после которой пациент должен быть жив.
Понадобились оптимизации — опаньки, их заранее предусмотреть нельзя, нужно решать дизайном, выделять узкое место в какой то управляемый формат.
По уму, любые изменения кода, особенно багфикс и оптимизации, должны начинаться и заканчиваться рефакторингом. Мелкими изменениями очень часто создают такую паутину, что крупные просто не влазат. Соответсвенно проще, дешевле следить за качеством кода.
Если менеджеры начинают жать, требовать сраочных фиксов, результатом практически всегда является технический долг. А вот желаемый эффект достигается далеко не всегда.
Например, мега-архитектор может придумать мега-фичу, на её реализацию уходит полгода, после чего оказывается, что фича перестала быть нужной, т.к. бизнес решил, что ему это и не было нужно. Вот такие вещи вносят чудовищный хаос в код. То есть, все особенности принятия решений в конторе оседают прежде всего в виде лишнего кода.
Вобщем, все проблемы, которые есть вокруг разработки, нестыковки, текучка, недопонимания любой природы, конфликты всех сортов, особенности принятия решения, все это и многое другое прежде всего отражается на коде.
Самое важное — стоимость сопровождения растет крайне нелинейно в зависимости от уже реализованых решений. И не важно, полезны они, или нет. Вот эта нелинейность убивает зачастую вообще весь профит.
Именно по этому код выгодно держать в чистоте. Чистый код легко изменять в любую сторону. Его даже вырезать и выбросить легче.
Более того — поскольку все вышесказаное требует рефакторинг, то очевидно, руками с этим не справиться. Нужна автоматизация.
U>- Find Usages меня устраивают, те что есть в VS. Если прям все-все искать — то стандартный поиск по solution тоже ок.
U>- Переразбивка проекта на части и неймспейсы — делаю руками. Хотя не любитель трогать, то что работает. И новых проектов тоже хватает.
И наверняка никогда не ошибаешься. А вот ведь именно эта работа дает огромное количество ручных ошибок. Поделил класс на два — надо все финты в конфигурции, инициализации и тд пофиксить руками. Кто гарантии обеспечивать будет?
U>- Создание интерфейса для какого-нибудь класса на 50 методов. Тоже редко такая задача появляется. Привык руками делать, но можно и так
Ок, расскажи, каким чудом ты будешь делать, преобразование, скажем, глубокой иерархии, скажем, в плоскую широкую. Плохая иерархия досталась от тех, неправильных девелоперов. На переписывание времени нет. Что делать?
Здравствуйте, bkat, Вы писали:
U>>>Попробую объяснить. Бюджета на ReSharper у нас не было, а если и было то на несколько лицензий. То есть идя на поводу у фанатов, мы либо лишались доли бюджета, который идет на зарплаты
M>>Стоимость решарпера — 449 евро в год. То есть 37 евро в месяц. Вы там за еду работали?
B>449 — это уже Ultimate с Rider. B>А так еще дешевле на самом деле.
Миллионы долларов экономят десятки и сотни долларов Недели и месяцы кодинга экономят минуты и часы проектирования.
U>Чего я не понимаю в мире разработки на C#?
При чем тут вообще C#? Это чисто психология людская. Продается товар, такой-же как и улучшатели для windows, какие-нибудь там катушки для рыбаков с керамическими подшипниками, женская косметика или модная стрижка для бороды.
Это фетишь, шиза.
Мало кто признается что реальная его производительность примерно 30 строчек отлаженного кода в день (тесты не считаются), и что он не сидит целыми днями рефакторит код.
Ну просят они у тебя решарпер и что? Жена у тебя никогда не просила какую-нибудь штуку не особо нужную(а может и совсем ненужную), или сам ты себе никогда хрень какую-нибудь не покупал?
С чего ты взял что они ведут себя рационально, а не как обычные люди?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Для С++ сильно хуже. Сам язык не позволяет на современном железе получить достаточно качественный результат.
А расскажите про Visual Assist. Я его не трогал с 2012 года, но мне стало интересно — вдруг хоть одна компания на планете сделала нечто полноценное для С++ ?
Здравствуйте, Слава, Вы писали:
С>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>Для С++ сильно хуже. Сам язык не позволяет на современном железе получить достаточно качественный результат.
С>А расскажите про Visual Assist. Я его не трогал с 2012 года, но мне стало интересно — вдруг хоть одна компания на планете сделала нечто полноценное для С++ ?
Коллеги пользуются, но фич у него не так много, а стоит теперь $279 первый год и $119 последующий, что не так уж и мало на фоне количества фич.
Здравствуйте, ukrspecs, Вы писали:
U>Выделение интерфейсов и методов — не уверен, правильно ли понимаю, так но за 20 лет наверное пару раз нужно было. Тогда я создаю интерфейс, делаю copy-paste из класса, убираю лишнее, затем в наследнике "Ctrl+." и методы генерятся. UPD: Да, это такая важная фича, что я даже не знал про то, что она есть из коробки в VS https://prnt.sc/qvyueo U>Это must-have функционал?
Да постоянно это надо. Вот есть готовый проект, уже всё работает, всё спроектировано грамотно. Внезапно появляется задача, которая прекрасно решается наследованием от одного из классов иерархии.
Вот только в Base слишком мало логики, а в Derived слишком много. Решарпер помогает превратить иерархию Derived:Base в Derived:Intermediate:Base, и отнаследоваться уже от Intermediate.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, ukrspecs, Вы писали:
U>Сейчас времена поменялись и стараюсь брать только новые проекты. Через 14 лет на фрилансе можно-то, раз спрос есть
Вот это буквально ответ на ваш вопрос. Вы избегаете всех тех задач, где нужен решарпер. Фриланс тут ни при чем.
Здравствуйте, ukrspecs, Вы писали:
U>Выделение интерфейсов и методов — не уверен, правильно ли понимаю, так но за 20 лет наверное пару раз нужно было. Тогда я <делаю руками работу, которую может выполнитить автоматический инструмент>
Выделение метода — это постоянный, каждодневный рефакторинг. Как только нашлось дублирование — первое, о чем надо думать, это выделение метода. Выделение интерфейса, класса, абстрактного класса, базового класса, дочернего класса, утилитного класса, класса-параметра, фасада, контроллера, состояния — чего угодно, это все необходимо для трансформации дизайна.
Например — длинный метод почти всегда прячет в себе вычисление нового состояния, изменение состояния, реакцию на это изменение состояния и абсолютно всегда содержит вагон дублирования. Этот длинный метод обладает способностью создавать баги на ровном месте. Что бы распилить его на части, нужны те самые приемы, что я указал выше. В простом случае хватит выделение метода. В сложных — вообще все вместе взятое. Скажем, когда код метод преодолевает планку в 100кб, в нём обязательно найдутся наколеночные реализации алгоритмов поиска, замены, вставки, сортировки, группировки, а так же маппинг и наряду с кастомным замаскированым mvc. Что бы избавиться от всего этого, или, наоборот, выделить все указаное в отдельные классы-интерфейсы-методы-утилиты-пакеты, нужна целая куча интструментов, которые дают минимум ошибок.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Kolesiki, Вы писали:
U>>>Но вопрос (для меня) остается открытым.
K>>Брат, ты не один! Решарпер действительно БЫЛ когда-то полезным дополнением (напр, к студии 2005), потому что саму студию писали посредственности. Но сейчас, за годы улучшений, Студия получила кучу плюшек и теперь Решарпер в ней как пятое колесо — ничего, кроме тормозов не привносит.
I>Узнаю разработчика-одиночку c идеальной памятью, который реализует закат солнца вручную
Узнаю гадалок в пёстрых платьях, которые по линиям руки всё сразу о тебе знают!
Милок, не сравнивай весь мир по себе. Если ты без решарпера как без рук — ради бога, но не считай всех остальных такими же убогими!
Решарпер помогает только в древних студиях. В новых он просто не нужен.
Рефакторинг? Делаю, но не так часто, чтобы ставить это убожество. К тому же, я не пишу г***нокод, чтобы потом "экстрактить методы" по 100 штук. Как правило, рефакторю только сигнатуры. Изредка — выделяю код в отдельный метод (что вообще не проблема). Ну и накой тут решарпер?? Решарпер — для студоты, настоящие самураи пишут почти идеальный код!
Здравствуйте, _NN_, Вы писали:
_NN>На самом деле у Решарпера довольно много мелких вещей к которым привыкаешь и если работаешь без него тратишь лишнее время .
_NN>Как минимум быстрый поиск всего, текста, метолов, классов. _NN>В студии встроенного пока нет.
Чё?? Точнее, "Чё курите?" Есть там всё! Самое примитивное — Ctrl+F, это для вашего "поиска текста". Поиск методов — ради бога, найди первый метод, далее find all references. Искать классы можно прямо в солюшене.
Ну другими словами, те, кто не разбирается в VS, учат чем решарпер хорош. А может для начала выучить основной тул?
_NN>Далее рефакторинг кода. _NN>У решарпера вагон правил, которых в студии нет.
Рефакторинг — признак тухлого, бестолково спроектированного кода. Сначала проектируем В ГОЛОВЕ, потом переносим в проект. Только так. Соотв. последующие рефакторинги не нуждаются в серьёзных и умных правках.
_NN>Коллеги, которые работают без него, тратят довольно много времени когда нужно что-нибудь поменять в коде и в итоге получается кол, который двумя нажатиями можно было легко улучшить.
Ну так не нанимайте джунов! Пусть научатся проектировать, потом уже кнопки давить.
_NN>Подсказки и предложения в коде. _NN>Без этого как без рук.
Это ещё зачем? Чтобы я утону в этих "давай сделаем этот метод internal"? оно мне надо? Как и говорил выше, не умеешь проектировать — не садись.
_NN>В студим есть немного правил настраиваемых через. editorconfig и есть дополнение Roslynator но это всё не дотягивает до того что есть в решарпере.
Там нечему "дотягивать" — возможностей студии по рефакторингу — за глаза. А писать г****внокод и потом эту вермишель "сортировать" — ну извини, тут программирование обсуждают, а не индусокод!
_NN>Ну и мелочи: _NN>Подсветка protobuf, поддержка VB.NET, JS, TS.
Вообще не упёрлось!
_NN>Удобный запускатель тестов.
Студия делает это одной кнопкой — куда уж удобнее?!
_NN>И много всего.
Ну да. Хлама в рюкзаке много, а открывашки нет!
_NN>Конечно можно и обойтись без него как и адепты VIM прекрасно работают с кодом, но зачем лишать себя удобств?
VS даёт вполне удобные инструменты, причём тут вим?? Не надо ТУПО утрировать, у вас и так аргументы — ниочём.
Короче, с адептами решарпера всё понятно: банда джунов набигает на код, писаный индусскими брахмапутрами. Извините, но это далеко не главная часть программирования!
Здравствуйте, Ikemefula, Вы писали:
I> Выделение метода — это постоянный, каждодневный рефакторинг.
В индусокоде — да. У профессионалов есть определённая память, поэтому когда он пишет код, он вспоминает, что нечто похожее делается в другом месте. Поэтому дублирующий код В ПРИНЦИПЕ не создаётся. Если же он у вас есть, ну так значит вы не понимаете свой проект! Это уже не проблема VS, тут ближе к квалификации разработчика.
Насколько я понял из всего диспута, решарпер НУЖЕН ДЖУНАМ. Это у них вермишель нуждается в упорядочивании + примитивные "подсказки по коду". Для профи от "среднего" и выше, решарпер — пятое колесо в телеге.
Здравствуйте, Kolesiki, Вы писали: K>Здравствуйте, _NN_, Вы писали: _NN>>На самом деле у Решарпера довольно много мелких вещей к которым привыкаешь и если работаешь без него тратишь лишнее время . _NN>>Как минимум быстрый поиск всего, текста, метолов, классов. _NN>>В студии встроенного пока нет. K>Чё?? Точнее, "Чё курите?" Есть там всё! Самое примитивное — Ctrl+F, это для вашего "поиска текста". Поиск методов — ради бога, найди первый метод, далее find all references. Искать классы можно прямо в солюшене. K>Ну другими словами, те, кто не разбирается в VS, учат чем решарпер хорош. А может для начала выучить основной тул?
Ок. Как это сделать в студии без дополнительных добавок ?
Скрытый текст
_NN>>Далее рефакторинг кода. _NN>>У решарпера вагон правил, которых в студии нет. K>Рефакторинг — признак тухлого, бестолково спроектированного кода. Сначала проектируем В ГОЛОВЕ, потом переносим в проект. Только так. Соотв. последующие рефакторинги не нуждаются в серьёзных и умных правках.
А если меняются требования и нужно переделывать код, что делаем ? Или у вас есть тайное знания будущего ? _NN>>Коллеги, которые работают без него, тратят довольно много времени когда нужно что-нибудь поменять в коде и в итоге получается кол, который двумя нажатиями можно было легко улучшить. K>Ну так не нанимайте джунов! Пусть научатся проектировать, потом уже кнопки давить.
В условиях постоянной нехватки времени бывают неидеальные решения.
Если у вас получается писать идеальный код и в момент изменения требований ничего не нужно радикально переделывать, то вам может и решарпер не нужен.
Возможно даже и студия со своими инструментами для работы с кодом это слишком много для вас. K>Короче, с адептами решарпера всё понятно: банда джунов набигает на код, писаный индусскими брахмапутрами. Извините, но это далеко не главная часть программирования!
В любом месте которому больше пары лет есть код написанный в сжатые сроки и не до конца продуманный или требующий улучшений.
Справляетесь без решарпера замечательно.
У меня например к нему в добавок стоят и другие расширения, и я без них никуда.
Здравствуйте, Kolesiki, Вы писали:
I>> Выделение метода — это постоянный, каждодневный рефакторинг.
K>В индусокоде — да. У профессионалов есть определённая память, поэтому когда он пишет код, он вспоминает, что нечто похожее делается в другом месте. Поэтому дублирующий код В ПРИНЦИПЕ не создаётся.
Забавно, что из всех кейсов ты прицепился к одному — дублированию. А про остальные сказать вероятно нечего?
>Если же он у вас есть, ну так значит вы не понимаете свой проект! Это уже не проблема VS, тут ближе к квалификации разработчика.
Цитирую себя "Узнаю разработчика-одиночку c идеальной памятью"
K>Насколько я понял из всего диспута, решарпер НУЖЕН ДЖУНАМ. Это у них вермишель нуждается в упорядочивании + примитивные "подсказки по коду". Для профи от "среднего" и выше, решарпер — пятое колесо в телеге.
Собтсвенно джунам он нужен в последнюю очередь. Решарпер нужен для того, что бы
1 работать с чужим кодом, как со своим собственным.
2 менять дизайн под изменение контекста не затрагивая поведения
Вероятно, тут ты скажешь, что дизайн создаёшь на десятиления и он не меняется ?
Здравствуйте, Kolesiki, Вы писали:
K>>>Брат, ты не один! Решарпер действительно БЫЛ когда-то полезным дополнением (напр, к студии 2005), потому что саму студию писали посредственности. Но сейчас, за годы улучшений, Студия получила кучу плюшек и теперь Решарпер в ней как пятое колесо — ничего, кроме тормозов не привносит.
I>>Узнаю разработчика-одиночку c идеальной памятью, который реализует закат солнца вручную
K>Узнаю гадалок в пёстрых платьях, которые по линиям руки всё сразу о тебе знают!
Насколько я понял, ты топишь исключительно за инкрементный подход к изменениям, "ровно там, где надо" и никаких рефакторингов.
Такой подход обычно там, где нет никаких тестов, документации и основной мотив "а вдруг навернётся!"
Решарпер и нужен для предоставления гарантий, что изменения в чужом, незнакомом коде будут безопасны.
K>Милок, не сравнивай весь мир по себе. Если ты без решарпера как без рук — ради бога, но не считай всех остальных такими же убогими!
Ну как же, цитируем некоего Kolesiki:
"У профессионалов есть определённая память, поэтому когда он пишет код, он вспоминает, что нечто похожее делается в другом месте. Поэтому дублирующий код В ПРИНЦИПЕ не создаётся. Если же он у вас есть, ну так значит вы не понимаете свой проект! Это уже не проблема VS, тут ближе к квалификации разработчика."
Как видишь, всё сходится Ты сам пишешь, что у тебя идеальная память.
> Делаю, но не так часто, чтобы ставить это убожество. К тому же, я не пишу г***нокод, чтобы потом "экстрактить методы" по 100 штук
Начиная с сеньора основная работа идет чужим кодом, а у тебя "я не пишу г***нокод" Ты адекватен?
При чем здесь ты вообще? Кроме тебя других нет в команде? Ни легаси, ни заимствований из других проектов ? Ни изменений требований, ограничений, команды? Оптимизациями ты тоже не занимаешься?
Вероятно и дизайн создаёшь на десятиления вперёд
Здравствуйте, Kolesiki, Вы писали:
_NN>>Далее рефакторинг кода. _NN>>У решарпера вагон правил, которых в студии нет.
K>Рефакторинг — признак тухлого, бестолково спроектированного кода. Сначала проектируем В ГОЛОВЕ, потом переносим в проект. Только так. Соотв. последующие рефакторинги не нуждаются в серьёзных и умных правках.
И требования никогда не меняются? Оптимизации не нужны ? Новые фичи не добавляются ? Миграции на новые технологии не случаются? И в команде только такие же Kolesiki ?
_NN>>Коллеги, которые работают без него, тратят довольно много времени когда нужно что-нибудь поменять в коде и в итоге получается кол, который двумя нажатиями можно было легко улучшить.
K>Ну так не нанимайте джунов! Пусть научатся проектировать, потом уже кнопки давить.
Джунов не брать. Легаси не трогать. Бизнес-логику не писать. Технологии не менять. Фичи не добавлять.
Что еще посоветуешь?
K>Там нечему "дотягивать" — возможностей студии по рефакторингу — за глаза. А писать г****внокод и потом эту вермишель "сортировать" — ну извини, тут программирование обсуждают, а не индусокод!
Так ты боишься этого индусокода? С этого и надо было начинать.
K>Короче, с адептами решарпера всё понятно: банда джунов набигает на код, писаный индусскими брахмапутрами. Извините, но это далеко не главная часть программирования!
Здравствуйте, Ikemefula, Вы писали:
I> Выделение метода — это постоянный, каждодневный рефакторинг. Как только нашлось дублирование — первое, о чем надо думать, это выделение метода. Выделение интерфейса, класса, абстрактного класса, базового класса, дочернего класса, утилитного класса, класса-параметра, фасада, контроллера, состояния — чего угодно, это все необходимо для трансформации дизайна.
Здравствуйте, vorona, Вы писали:
I>> Выделение метода — это постоянный, каждодневный рефакторинг. Как только нашлось дублирование — первое, о чем надо думать, это выделение метода. Выделение интерфейса, класса, абстрактного класса, базового класса, дочернего класса, утилитного класса, класса-параметра, фасада, контроллера, состояния — чего угодно, это все необходимо для трансформации дизайна.
V>Выделение метода есть в студии.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Поддержку докера уже завезли? Ну там чтобы dockerfile хотя бы умело генерить да отладку внутри контейнера запускать?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>На 25 чловек один лид? Сурово.
Безусловно. Причем когда брали, говорили что будет человек 6-8. Потом толпа народу как повалила, что пришлось уходить мне, ибо казалось что попал в ад.
НС>В чем проблема купить лицензию?
Писал выше. Бюррократия. Менеджеры аутсорсера с менеджерами заказчика это обсуждать не хотели.
НС>Неверно поставленный вопрос. Верный вопрос — чем отличается средний код, написанный с решарпером от написанного без него? НС>Слышал когда нибудь такое выражение — ReSharper clean code?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, ukrspecs, Вы писали:
U>>- Find Usages меня устраивают, те что есть в VS. Если прям все-все искать — то стандартный поиск по solution тоже ок.
НС>Скорость и точность, мягко говоря, не та.
Попробуйте нажать "Ctrl+,", и удивитесь как быстро все находится в реалтайме.
U>> Хотя не любитель трогать, то что работает. И новых проектов тоже хватает. U>>Привык руками делать
НС>Аутсорс, да? Ну тогда и правда, особо бороться за качество кода смысла нет. Работает — и ладно.
Сейчас фриланс. И уж где-где, а тут каждый час на счету. И если бы Решарпер экономил бы мне время — я бы им пользовался. Но он только увеличивает время загрузки и перебивает хоткеи.
Поэтому, извините.
В свое время юзал Visual Assist для плюсов — то было оправдано. Году так в 2010-ом.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали: U>>- Создание интерфейса для какого-нибудь класса на 50 методов. Тоже редко такая задача появляется. Привык руками делать, но можно и так
I>Ок, расскажи, каким чудом ты будешь делать, преобразование, скажем, глубокой иерархии, скажем, в плоскую широкую. Плохая иерархия досталась от тех, неправильных девелоперов. На переписывание времени нет. Что делать?
Наследования вообще лучше избегать. И в целом любая задача решается без наворачивания абстракций на абстракции. В моих 70-ти фриланс проектах не было глубоких иерархий и нужды превращать их в плоские тоже.
Было условно 2 типа задач:
— Сделать так чтоб работало (и побыстрее). Bug fixes иначе говоря. Побыстрее — решается костылем, через какой нибудь делегат или utility class
— Написать все с нуля. Тут проблем никогда не было, все что я писал с нуля — работает до сих пор и расширяется без overengneering'а и прочей черной магии
Сейчас в меня полетят помидоры, за анти-девелоперский подход не по фен шую Страуструпу. Но мои клиенты предпочтут рабочую программу, которая приносит ценность. Нежели техническое совершенство внутри.
А если вы подумаете — "ха, быдлокодер", то в свою защиту могу сказать, что доход от такой деятельности раза в 4 выше зарплаты senior developer в конторе.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали:
U>>Сейчас времена поменялись и стараюсь брать только новые проекты. Через 14 лет на фрилансе можно-то, раз спрос есть
I>Вот это буквально ответ на ваш вопрос. Вы избегаете всех тех задач, где нужен решарпер. Фриланс тут ни при чем.
Нет, я избегаю проектов, где нужно ковырять чужой овно-код. Извините, на данном этапе — здоровье дороже. Ну а если уж придется опять в это окунуться, то ответа — зачем мне решарпер — я тут не нашел.
Основной аргумент — превращать иерархии и выделять интерфейсы — в моей деятельности это не сильно нужно. Точнее не нужно совсем.
Здравствуйте, ukrspecs, Вы писали:
НС>>Скорость и точность, мягко говоря, не та. U>Попробуйте нажать "Ctrl+,", и удивитесь как быстро все находится в реалтайме.
Лучше ты попробуй в решарпере ctrl+N нажать. И попробовать сокращенные иденты набирать или * вставлять.
НС>>Аутсорс, да? Ну тогда и правда, особо бороться за качество кода смысла нет. Работает — и ладно. U>Сейчас фриланс.
А фриланс это не аутсорс?
U> И уж где-где, а тут каждый час на счету. И если бы Решарпер экономил бы мне время — я бы им пользовался.
Решарпер экономит время на поддержании уровня качества кода. Причем чем больше и дольше проект и чем больше команда, тем больше экономит. А когда скорость важнее качества, то Решарпер особо то и не нужен.
Здравствуйте, Ikemefula, Вы писали:
K>>Короче, с адептами решарпера всё понятно: банда джунов набигает на код, писаный индусскими брахмапутрами. Извините, но это далеко не главная часть программирования! I>Пиши, пиши
Зачем с ним вообще разговаривать? Годы идут, а он пишет всё ту же ахинею и в неизменном стиле.
Здравствуйте, ukrspecs, Вы писали:
U>В моих 70-ти фриланс проектах ...
70 проектов Это если всю жизнь работать, то проект будет меньше года. А если за 10 лет, то по месяцу-два на проект. Студенческий по сложности.
С этого и надо было начинать. Как раз то, о чем я писал здесь — на коротких проектах в тулах вроде решарпера выхлоп ничтожный.
>Сделать так чтоб работало (и побыстрее). Bug fixes иначе говоря. Побыстрее — решается костылем, через какой нибудь делегат или utility class
U>А если вы подумаете — "ха, быдлокодер", то в свою защиту могу сказать, что доход от такой деятельности раза в 4 выше зарплаты senior developer в конторе.
Такой подход в долговременных проектах не работает, независимо от уровня ЗП.
Здравствуйте, ukrspecs, Вы писали:
U>Нет, я избегаю проектов, где нужно ковырять чужой овно-код. Извините, на данном этапе — здоровье дороже. Ну а если уж придется опять в это окунуться, то ответа — зачем мне решарпер — я тут не нашел.
О чем я и пишу. Решарпер позволяет менять и окультуривать именно чужой код относительно легко. Не "враз", но несравнимо легче, чем без него. Он позволяет проводить рефакторинг там, где этот самый рефакторинг никто в своём уме не делает и код тухнет годами и даже десятилетиями.
Зачем решарпер — затем, что в ём целая куча интрументов именно для этого кейса — чужой древний запутаный код, который ковбойским набегам более не поддаётся.
Здравствуйте, ukrspecs, Вы писали:
I>>Вот это буквально ответ на ваш вопрос. Вы избегаете всех тех задач, где нужен решарпер. Фриланс тут ни при чем.
U>Нет, я избегаю проектов, где нужно ковырять чужой овно-код. Извините, на данном этапе — здоровье дороже. Ну а если уж придется опять в это окунуться, то ответа — зачем мне решарпер — я тут не нашел.
Зачем решарпер в чужом коде — безопасно вводить изменения, когда кода например, просто слишком много, а какая нибудь абстракция проросла вообще везде
U>Основной аргумент — превращать иерархии и выделять интерфейсы — в моей деятельности это не сильно нужно. Точнее не нужно совсем.
В 70-ти фриланс проектах — таки да.
В длинных проектах такое случается вобщем довольно часто. Скажем, почти каждый год лично у меня тема plugability-replacability-extensibility-maintenability, наряду с разбиением-отчуждением-миграцией играет постоянно. Без внятного инструмента косяки случаются слишком часто.
Здравствуйте, Ночной Смотрящий, Вы писали:
V>>Это все есть в студии НС>Это все появилось в студии относительно недавно.
Всё заявленое есть ну с 2015 студии точно, может и раньше. В ЕМНИП 2017 добавили 'Go to All', который ну не уступает решарперскому поиску, на чём, в принципе, список киллерфич решарпера можно считать закрытым.
НС>И не совсем все.
Из "непоявивщегося" нашли аж один довольно экзотический рефакторинг 'extract superclass'.
Вообще тот факт, что приходится вот прямо специально выискивать, какие же это хиртые функции есть в Решарпере, которых нет в студии из коробки как-бы полностью раскрывает его вот просто крайнюю необходимость.
Нет, если кто любит и согласен терпеть бесконечные "Visual Studio stopped responding for 11 seconds. Disabling the extension JetBrains ReSharper XXX might help" на проектах чуть крупнее "Hello world" ради бога.
Но в 2020 году история что R# прямо must have и "как без рук" мягко говоря преувеличение.
Здравствуйте, Max Mustermann, Вы писали:
MM>Из "непоявивщегося" нашли аж один довольно экзотический рефакторинг 'extract superclass'.
Он никакой не экзотической, а совсем наоборот — очень востребованный. Он позволяет выносить из класса лишний код, скажем, в мидлвары-декораторы, врапперы, всякие хелперы и много чего другого.
MM>Вообще тот факт, что приходится вот прямо специально выискивать, какие же это хиртые функции есть в Решарпере, которых нет в студии из коробки как-бы полностью раскрывает его вот просто крайнюю необходимость.
Этот факт прежде всего говорит о твоём подходе в первую очередь, т.е. об отсутствии привычки наводить должны порядок в коде или отсутствии необходимости работать с чужим/легаси кодом.
Здравствуйте, Max Mustermann, Вы писали: MM>Здравствуйте, Ночной Смотрящий, Вы писали: V>>>Это все есть в студии НС>>Это все появилось в студии относительно недавно. MM>Всё заявленое есть ну с 2015 студии точно, может и раньше. В ЕМНИП 2017 добавили 'Go to All', который ну не уступает решарперскому поиску, на чём, в принципе, список киллерфич решарпера можно считать закрытым. НС>>И не совсем все. MM>Из "непоявивщегося" нашли аж один довольно экзотический рефакторинг 'extract superclass'. MM>Вообще тот факт, что приходится вот прямо специально выискивать, какие же это хиртые функции есть в Решарпере, которых нет в студии из коробки как-бы полностью раскрывает его вот просто крайнюю необходимость.
Т.е. рефакторинг от Решарпера не нужен, а когда появляется аналогичная функциональность, то оказывается таки эти функции нужны ? MM>Но в 2020 году история что R# прямо must have и "как без рук" мягко говоря преувеличение.
Так и раньше можно было без него, когда студия вообще ничего не умела.
Я точно не пользуюсь всеми 100%-ми функциональности Решарпера, но я ясно вижу как работают коллеги без него, и они выполняют в несколько раз больше действий приводящим к худшему результату.
Потом на код ревью приходится переделывать и это занимает ещё лишнее время.
Скажем, банальная функциональность навигация по стек трейсу, студия такого из коробки не умеет.
Здравствуйте, Ikemefula, Вы писали:
>> Делаю, но не так часто, чтобы ставить это убожество. К тому же, я не пишу г***нокод, чтобы потом "экстрактить методы" по 100 штук I>Начиная с сеньора основная работа идет чужим кодом, а у тебя "я не пишу г***нокод" Ты адекватен?
Он просто работает один, не в команде. Отсюда синдром первого парня на деревне в особо запущеной стадии. Что то ему объяснять в этом плане бессмысленно, он просто не поймет за отсутствием определенного опыта.
Здравствуйте, Kolesiki, Вы писали:
K>В индусокоде — да. У профессионалов есть определённая память, поэтому когда он пишет код, он вспоминает, что нечто похожее делается в другом месте. Поэтому дублирующий код В ПРИНЦИПЕ не создаётся.
Чувак, профессионалы работают в команде, поэтому В ПРИНЦИПЕ невозможно помнить весь код более менее крупного проекта.
Вот, п примеру, на текущем проекте за сегодня было 18 мержей в мастер. Всего коммитов было больше сотни. Это обычный рабочий день, ничем не выдающийся. Ты правда думаешь что это можно физически хотя бы просмотреть, не говоря уж о детальном запоминании?
Здравствуйте, Ikemefula, Вы писали:
I>Собтсвенно джунам он нужен в последнюю очередь.
Джунам он тоже очень нужен. Просто для избегания моря глупых ошибок и помарок в коде. Хотя им самим может, конечно, казаться что он им не нужен, и они легко руками, с их то памятью про весь код проекта.
Опять же, уверен что если взять любой кусок кода уважаемых Колесиков, то он в решарпере запестрит кучей желтых проблем.
Здравствуйте, vorona, Вы писали:
V>Выделение метода есть в студии.
А, к примеру, автоматическая генерация проверок на null, причем с использованием конкретного фреймворка с ассертами? Как насчет дописывания switch expression отсутствующими кейсами? Что по поводу подсказок на предмет забытого в параметрах CancellationToken? Ну или такой банальщины как преобразование циклов в LINQ цепочки замены нескольких if на switch, замены if на тернарный оператор, замена as на is и т.п.?
Не, я сам не знаю что конкретно из перечисленного отсутствует в наипоследней студии, последний раз в голой студии ковырялся года полтора назад. Но когда ковырялся — таких мелочей было просто огромное количество. Каждая из них сама по себе не так чтобы критична, но в целом решарпер выполняет за меня огромнейшее количество работы по приведению кода в более приличное состояние.
Что же касается иллюзий по поводу того, что уж я то точно пишу код, который в причесывании не нуждается — решарпер находит реальные проблемы даже в проектах, которые долго вылизывали крутые спецы, проверено на практике.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, ukrspecs, Вы писали:
U>>Так не о цене речь, а о бюрократии.
НС>Какая может быть бюрократия в покупке лицензий на инструменты разработки? Студию то вы как то покупаете ведь, хотя цена там в несколько раз больше.
Слушай, ну я не сидел в топ-менеджменте, считали что и без решарпера справимся. Иначе нужно было всему отделу покупать, а эти расходы в этимейт не входили. Это ж не взял со своей кредитки и купил серийник,
там сотни человек крутилось вокруг проекта, что даже бесплатный софт свой не поставишь. Корпорация это называется.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали:
U>>В моих 70-ти фриланс проектах ...
I>70 проектов Это если всю жизнь работать, то проект будет меньше года. А если за 10 лет, то по месяцу-два на проект. Студенческий по сложности. I>С этого и надо было начинать. Как раз то, о чем я писал здесь — на коротких проектах в тулах вроде решарпера выхлоп ничтожный.
Где я написал, что 70 проектов были написаны лично мной? Меня бросали как правило в средних размеров проект, фиксить баги-добавлять фичи. Так чтоб с нуля писать — наверное штук 5-8. И это было больше года, и сейчас продолжается. Я параллельно на нескольких сижу. До 10 проектов одновременно.
I>Такой подход в долговременных проектах не работает, независимо от уровня ЗП.
Куча софта написано через задний проход, с одной целью — побыстрее выкатить релиз и поднять денег. Вот первое что пришло на ум — Skype, Slack, Windows 8/Vista, Xamarin тот же.
Такой подход — это то как большинство заказчиков видят разработку в целом. Х-як х-як и в продакшн.
Борцы за эталонную архитектуру и чистый код, как правило сидят уже на золотом унитазе и занимаются этими рефакторингами, абстрагированием, мета-программированием... что бы хоть чем то быть занятым в сопровождении.
Ну и? Далеко не все что я навскидку вспомнил там есть. А то что есть — ну вот те же null checks генерят жесткий паттерн, и если ты используешь библиотеку ассертов — получаем полный облом.
Здравствуйте, ukrspecs, Вы писали:
I>>70 проектов Это если всю жизнь работать, то проект будет меньше года. А если за 10 лет, то по месяцу-два на проект. Студенческий по сложности. I>>С этого и надо было начинать. Как раз то, о чем я писал здесь — на коротких проектах в тулах вроде решарпера выхлоп ничтожный.
U>Где я написал, что 70 проектов были написаны лично мной? Меня бросали как правило в средних размеров проект, фиксить баги-добавлять фичи. Так чтоб с нуля писать — наверное штук 5-8. И это было больше года, и сейчас продолжается. Я параллельно на нескольких сижу. До 10 проектов одновременно.
Сунуть нос в 70 проектов, если за всю сознательную жизнь, это с 20 лет до 70, получается целых 8 с половиной месяцев. Тащить 10 проектов одновременно, это в среднем в месяц по 16 часов на каждый. Если сидеть одновременно на нескольких, то слишком высокие издержки на переключние
Вобщем — нет ни единого шанса погрузиться на должную глубину.
Фиксить баги, добавлять фичи — это примерно то, чем занят мидл. Интересно, да? Для мидла как раз не так критично, есть решарпер или его нет, как для сеньора.
I>>Такой подход в долговременных проектах не работает, независимо от уровня ЗП.
U>Куча софта написано через задний проход, с одной целью — побыстрее выкатить релиз и поднять денег. Вот первое что пришло на ум — Skype, Slack, Windows 8/Vista, Xamarin тот же.
Так ты ж сам пишешь — наскоком, главное сделать и тд
Твои примеры крайне странные. Про Скайп и Винду еще можно как то согласиться, то Слак в целом стабильный, качественный и очень полезный. Про ксамарин — с ним не работал, но в целом от телерика впечатление крайне негативное.
U>Такой подход — это то как большинство заказчиков видят разработку в целом. Х-як х-як и в продакшн. U>Борцы за эталонную архитектуру и чистый код, как правило сидят уже на золотом унитазе и занимаются этими рефакторингами, абстрагированием, мета-программированием... что бы хоть чем то быть занятым в сопровождении.
В майнтенансе по другому невозможно — кавалерийский наскок при выпуске следующей версии очень часто заканчивается плачевно. Я по природе что-то типа разработчик-патологоанатом или реаниматолог Приходися реанимировать упоротые вот такими ковбойскими приемами проекты. Каждый ковбой оставляет в проекте шлейф багов разного калибра, которые всплывают регулярно в течении всех последующих версий. Какая бы фича не пилилась, в ней обязательно будет баг, который ведет на строчку заминированую каким нибудь ковбоем. И как правило этот баг виден только при внятном ручном тестировании, например, бесит юзера а девелоперы его в упор не замечают. Пока тестировщик не найдет точную последовательность, баг не будет пофикшен.
Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, ukrspecs, Вы писали:
I>Сунуть нос в 70 проектов, если за всю сознательную жизнь, это с 20 лет до 70, получается целых 8 с половиной месяцев. Тащить 10 проектов одновременно, это в среднем в месяц по 16 часов на каждый. Если сидеть одновременно на нескольких, то слишком высокие издержки на переключние I>Вобщем — нет ни единого шанса погрузиться на должную глубину.
Были проекты которые делались за неделю и меньше. Были крупные на которых сидел 1.5-2 года. Незнаю что у тебя за арифметка, но для фриланса обычное дело брать много заказов.
I>Так ты ж сам пишешь — наскоком, главное сделать и тд
I>Твои примеры крайне странные. Про Скайп и Винду еще можно как то согласиться, то Слак в целом стабильный, качественный и очень полезный. Про ксамарин — с ним не работал, но в целом от телерика впечатление крайне негативное.
Слак съедает пол гига RAM'ы на минималках. И это внутри этой проги крутится еще Хромиум. Может он и стабильный, но тормозной до безобразия, не оптимизированный. Ксамарин до покупки Microsoft — это была адская боль, потому что падало все что могло упасть. Да и сейчас — это не образец стабильности.
I>В майнтенансе по другому невозможно — кавалерийский наскок при выпуске следующей версии очень часто заканчивается плачевно. Я по природе что-то типа разработчик-патологоанатом или реаниматолог Приходися реанимировать упоротые вот такими ковбойскими приемами проекты. Каждый ковбой оставляет в проекте шлейф багов разного калибра, которые всплывают регулярно в течении всех последующих версий. Какая бы фича не пилилась, в ней обязательно будет баг, который ведет на строчку заминированую каким нибудь ковбоем. И как правило этот баг виден только при внятном ручном тестировании, например, бесит юзера а девелоперы его в упор не замечают. Пока тестировщик не найдет точную последовательность, баг не будет пофикшен.
Да, мы с тобой с разных миров разработки, но даже работая в офисе — я обходился без шарпера.
Здравствуйте, ukrspecs, Вы писали:
I>>Сунуть нос в 70 проектов, если за всю сознательную жизнь, это с 20 лет до 70, получается целых 8 с половиной месяцев. Тащить 10 проектов одновременно, это в среднем в месяц по 16 часов на каждый. Если сидеть одновременно на нескольких, то слишком высокие издержки на переключние I>>Вобщем — нет ни единого шанса погрузиться на должную глубину.
U>Были проекты которые делались за неделю и меньше. Были крупные на которых сидел 1.5-2 года. Незнаю что у тебя за арифметка, но для фриланса обычное дело брать много заказов.
В том то и дело, ты вещаешь с позиции не просто фриланса, а ориентированого на короткие проекты. Если у тебя было 70 проектов, то ясно, что среди них не может быть много длинных.
1.5-2 года — небольшой срок вобще говоря.
U>Слак съедает пол гига RAM'ы на минималках. И это внутри этой проги крутится еще Хромиум. Может он и стабильный, но тормозной до безобразия, не оптимизированный.
Сколько кто съедает — не интересно, со стабильностью проблема нет. Потребление в пересчете на стоимость гб памяти никакое не примечательное. Скажем, в те время, когда RAM Было 64-256мб было полно полезного софта который "выжирал" ококоло четверти этой RAM. И ничего. Полгига — это в худшем случае десятая часть.
>Ксамарин до покупки Microsoft — это была адская боль, потому что падало все что могло упасть. Да и сейчас — это не образец стабильности.
Про другие продукты от телерика аналогичные отзывы и так уже лет 10 наверное.
I>>В майнтенансе по другому невозможно — кавалерийский наскок при выпуске следующей версии очень часто заканчивается плачевно. Я по природе что-то типа разработчик-патологоанатом или реаниматолог Приходися реанимировать упоротые вот такими ковбойскими приемами проекты. Каждый ковбой оставляет в проекте шлейф багов разного калибра, которые всплывают регулярно в течении всех последующих версий. Какая бы фича не пилилась, в ней обязательно будет баг, который ведет на строчку заминированую каким нибудь ковбоем. И как правило этот баг виден только при внятном ручном тестировании, например, бесит юзера а девелоперы его в упор не замечают. Пока тестировщик не найдет точную последовательность, баг не будет пофикшен.
U>... но даже работая в офисе — я обходился без шарпера.
Так ты потому и пошел во фриланс, что он был для тебя близок Не само ведь это произошло — шел, шел в офис, и каким то чудом оказался не в офисе утром, а в разгаре фриланса на 70ти проектах разом.
U> Да, мы с тобой с разных миров разработки, ...
Если у тебя много опыта, это не значит, что он абсолютный и всеъобъемлющий. Такого не бывает. Ответ на твой вопрос на решарпер именно в этом — фриланс, короткие проекты и нежелание работать с чужим кодом.
Вот и всё — никаких чудес.
И заметь, я не пишу, что фриланс это плохо, или 70 проектов это так себе. С т.з. заработка денег это очень выгодно, как минимум в краткосрочной перспективе. И далеко не все девелоперы, и даже не большинство, вообще смогут работать во фрилансе. То есть, для твоей области с тобой скорее всего всё в порядке.
Небольшое отступление. Не бывает оценок вида "хорош вообще". Оценка всегда применима только в связке с конкретной целью, контекстом.
Например — работа в энтерпрайзе в большой команде на долгоиграющем проекте.
Другой пример — работа во фрилансе на множестве проектов разной длительности включая совмещение работы на большом количестве проектов.
Шеридан-кейс — работа в одиночку на небольшого дикорастущего заказчика без команды, процессов, инструментов и тд.
Для каждого кейса есть свои ключевые склилы-свойства-обязанности. А вот даже степень владения ЯП или VM для всех будет сильно разной. Одним надо ширина обхвата, другим глубина погружения, третьим — коммуникация, четвертым — владение мат-методами в конкретно заданой области.
И девелоперы, которые долго работают в своей области, обычно с большим трудом интегрируются в другие. Это факт, его можно только признать. Есть и исключения — суровые всемогуторы, герои легенд всех времён и народов. Теоретически, они есть в природе, но чем дальше в будущее, тем чаще в легендах.
I>И девелоперы, которые долго работают в своей области, обычно с большим трудом интегрируются в другие. Это факт, его можно только признать. Есть и исключения — суровые всемогуторы, герои легенд всех времён и народов. Теоретически, они есть в природе, но чем дальше в будущее, тем чаще в легендах.
Причем часто после таких героев-всемогуторов надо еще года два вычищать проекты Они, правда, очень сильно попогают на старте стартапов именно в силу всемогуторности.
Здравствуйте, Ikemefula, Вы писали:
I>В том то и дело, ты вещаешь с позиции не просто фриланса, а ориентированого на короткие проекты. Если у тебя было 70 проектов, то ясно, что среди них не может быть много длинных. I>1.5-2 года — небольшой срок вобще говоря.
Вот последний проект на котором просидел 1.5 года, лепят 8 лет к ряду уже. Естественно чужого кода там чуть менее чем весь. Однако за рефакторинг могли бить по рукам, задача обычно сводится к тому чтобы работало. А рефакторинг по дефолту — это что-то упустить и навернуть всю систему. Первое правило ж — работает — не трожь.
U>>Слак съедает пол гига RAM'ы на минималках. И это внутри этой проги крутится еще Хромиум. Может он и стабильный, но тормозной до безобразия, не оптимизированный.
I>Сколько кто съедает — не интересно, со стабильностью проблема нет. Потребление в пересчете на стоимость гб памяти никакое не примечательное. Скажем, в те время, когда RAM Было 64-256мб было полно полезного софта который "выжирал" ококоло четверти этой RAM. И ничего. Полгига — это в худшем случае десятая часть.
Пол гига для простого чатика — это не то что много — это катастрофически неприемлимо. Тоже самое можно сказать и про Viber, Telegram и WhatsApp отчасти. Однако они нативные, не browser-based, насколько знаю.
>>Ксамарин до покупки Microsoft — это была адская боль, потому что падало все что могло упасть. Да и сейчас — это не образец стабильности.
I>Про другие продукты от телерика аналогичные отзывы и так уже лет 10 наверное.
Вы наверное что-то путаете, или я чего-то незнаю, Xamarin — самостоятельная разработка компании под одноименным названием, на основе Моно. Идея эта пришла некоему Бразильцу
Мигелю Де Иказа. Телерик — это из области создания UI компнонентов, из другой оперы совсем,
I>Так ты потому и пошел во фриланс, что он был для тебя близок Не само ведь это произошло — шел, шел в офис, и каким то чудом оказался не в офисе утром, а в разгаре фриланса на 70ти проектах разом.
Я пошел во фриланс потому что жил в жопе мира, где работы для программиста не было как таковой. А я к слову начал в начале нулевых как с рсдна, потом по книжкам учить С++ и завертелось.
I>Если у тебя много опыта, это не значит, что он абсолютный и всеъобъемлющий. Такого не бывает. Ответ на твой вопрос на решарпер именно в этом — фриланс, короткие проекты и нежелание работать с чужим кодом. I>Вот и всё — никаких чудес.
Я и не претендую на совершенное мнение, тем более в контексте разработчика в офисе на долгоиграющем проекте. Да я вообще мало что могу рассказать про такую работу, кроме того что мне кажется это дико скучным и бесперспективным, мусолить годами один и тот же код.
I>Небольшое отступление. Не бывает оценок вида "хорош вообще". Оценка всегда применима только в связке с конкретной целью, контекстом.
Разумеется.
Здравствуйте, ukrspecs, Вы писали:
U>Вот последний проект на котором просидел 1.5 года, лепят 8 лет к ряду уже. Естественно чужого кода там чуть менее чем весь. Однако за рефакторинг могли бить по рукам, задача обычно сводится к тому чтобы работало. А рефакторинг по дефолту — это что-то упустить и навернуть всю систему. Первое правило ж — работает — не трожь.
И ты такие проекты приводишь в качестве примера почему решарпер не нужен? Серьезно?
U>Я и не претендую на совершенное мнение, тем более в контексте разработчика в офисе на долгоиграющем проекте. Да я вообще мало что могу рассказать про такую работу, кроме того что мне кажется это дико скучным и бесперспективным, мусолить годами один и тот же код.
А тебе в принципе как, кажется скучным довести хотя бы какое нибудь дело до конца? Или для тебя процесс важнее результата?
U>Вот последний проект на котором просидел 1.5 года, лепят 8 лет к ряду уже. Естественно чужого кода там чуть менее чем весь. Однако за рефакторинг могли бить по рукам, задача обычно сводится к тому чтобы работало. А рефакторинг по дефолту — это что-то упустить и навернуть всю систему. Первое правило ж — работает — не трожь.
Ну то есть ровно то, с чем работают практически все твои оппоненты, и о чем твои оппоненты тебе говорят. И тут внезапно такой пассаж:
U>Я и не претендую на совершенное мнение, тем более в контексте разработчика в офисе на долгоиграющем проекте. Да я вообще мало что могу рассказать про такую работу, кроме того что мне кажется это дико скучным и бесперспективным, мусолить годами один и тот же код.
Ну то есть твоя работа — это прискакать на пару месяцев на проект, наговнякать код неважно какого качества и ускакать. Разбираться в проектах времени нет (это же скучно), рефакторить времени нет (не разобравшись в проекте можно что-то упустить и навернуть всю систему).
Ну да. В таких условиях и vim с grep'ом — инструменты на острие прогресса, больше ничего не надо.
ЗЫ. Такой подход тоже работает (этим живут все консалтинговые конторы). И да, при таком подходе РеШарпер и прочие инструменты не нужны.
Здравствуйте, ukrspecs, Вы писали:
U>Вот последний проект на котором просидел 1.5 года, лепят 8 лет к ряду уже. Естественно чужого кода там чуть менее чем весь. Однако за рефакторинг могли бить по рукам, задача обычно сводится к тому чтобы работало. А рефакторинг по дефолту — это что-то упустить и навернуть всю систему. Первое правило ж — работает — не трожь.
Странное у тебя понимание рефакторинга. Можно подробнее, как рефакторинг может навернуть систему? Ты его с переписыванием не путаешь?
В целом, правильное определение, что же такое рефакторинг, это уверенный признак очень годного сеньора У молодых рефакторинг это просто последовательность каких то изменений в коде, после которых, по мнению разработчика, всё должно стать лучше — эдакий улучшайзер.
Тут хотелось бы подробностей, за что именно бьют по рукам — за рефакторинг, или за улучшайзер.
U>Пол гига для простого чатика — это не то что много — это катастрофически неприемлимо. Тоже самое можно сказать и про Viber, Telegram и WhatsApp отчасти. Однако они нативные, не browser-based, насколько знаю.
Слак это органайзер для командной работы. По количеству и сложности функционала он превосходит и вайбер, и телеграм, и воцап вместе взятые.
U>Я и не претендую на совершенное мнение, тем более в контексте разработчика в офисе на долгоиграющем проекте. Да я вообще мало что могу рассказать про такую работу,
Это и есть основная причина, по которой ты не понимаешь Решарпер.
>кроме того что мне кажется это дико скучным и бесперспективным, мусолить годами один и тот же код.
Если ты мусолишь годами одно и то же, следовательно не можешь это изменить, отсюда и скука. При рефакторинге код у тебя меняется непрерывно, эволюционирует, соответственно, не надо его мусолить годами.
Перспективы — движение вперед, не быстрое, но стабильное, потому как крайне редко возвращаешься к уже готовым, работающим вещам — они просто работают, а не оттягивают на себя внимание. Соответственно, ты растешь — масштаб твоей работы увеличивается.
То есть, ты путаешь рефакторинг с его отсутствием. И как следствие инструмент тебе видится лишним.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, ukrspecs, Вы писали:
НС>И ты такие проекты приводишь в качестве примера почему решарпер не нужен? Серьезно?
Какие такие? Пользователей >1m — это мало.
U>>Я и не претендую на совершенное мнение, тем более в контексте разработчика в офисе на долгоиграющем проекте. Да я вообще мало что могу рассказать про такую работу, кроме того что мне кажется это дико скучным и бесперспективным, мусолить годами один и тот же код.
НС>А тебе в принципе как, кажется скучным довести хотя бы какое нибудь дело до конца? Или для тебя процесс важнее результата?
Я много чего довел до конца, с нуля в том числ6. Сейчас результат важнее, раньше был процесс.
Здравствуйте, Ikemefula, Вы писали:
I>Странное у тебя понимание рефакторинга. Можно подробнее, как рефакторинг может навернуть систему? Ты его с переписыванием не путаешь? I>В целом, правильное определение, что же такое рефакторинг, это уверенный признак очень годного сеньора У молодых рефакторинг это просто последовательность каких то изменений в коде, после которых, по мнению разработчика, всё должно стать лучше — эдакий улучшайзер. I>Тут хотелось бы подробностей, за что именно бьют по рукам — за рефакторинг, или за улучшайзер.
Ой, ну те же разбивки на методы и выделение интерфейсов, могут вылезти боком. А скрытая причина может быть любая на ваш вкус: 1) рефлексия, а идентификатор сменил имя. 2) сериализация-десериализация, когда конфиг файл привязан к имени идентификатора 3) Bindings данных к UI сломать в два щелчка можно 4) Та же история с API запросами, когда объект приходит с сервера, а он уже отрефакторен.
Да в целом любая внешняя привязка, будь то БД, файл, API или что нибудь еще запросто валится при этом вашем рефакторинге. Вы мне сейчас начнете рассказывать про юнит-тесты и толпу QA которые все это прогоняют, но речь не об этом. Ты спросил — я ответил. Когда работаешь один в цейтноте, то любые изменения требуют regression testing. А я один или еще с парой человек не буду этим заниматься. И главная мысль — что решарпер не учитывает то, что происходит за пределами кода.
I>Слак это органайзер для командной работы. По количеству и сложности функционала он превосходит и вайбер, и телеграм, и воцап вместе взятые.
Если бы он превосходил по сложности — то компания Slack была бы больше перечисленных. У последних — high-load настолько high, что Слаку и не снилось.
I>Это и есть основная причина, по которой ты не понимаешь Решарпер.
Заметь не только я. Тут еще дюжина коллег с аналогичным мнением. А упорно топишь за R# только ты. JetBrains Evangelist?
I>Если ты мусолишь годами одно и то же, следовательно не можешь это изменить, отсюда и скука. При рефакторинге код у тебя меняется непрерывно, эволюционирует, соответственно, не надо его мусолить годами. I>Перспективы — движение вперед, не быстрое, но стабильное, потому как крайне редко возвращаешься к уже готовым, работающим вещам — они просто работают, а не оттягивают на себя внимание. Соответственно, ты растешь — масштаб твоей работы увеличивается.
Я имел ввиду один проект — одну предметную область — один стек. Годами. Веселей смотреть как на заборе краска сохнет.
У нас видимо задачи в духе добавить строчку в лог растянуты на пару недель? У меня за пару недель может быть добрая половина нового мобильного приложения написана.
Ну кому что. Как ты говорил — это не хорошо и не плохо.
Здравствуйте, ukrspecs, Вы писали:
I>>Тут хотелось бы подробностей, за что именно бьют по рукам — за рефакторинг, или за улучшайзер.
U>Ой, ну те же разбивки на методы и выделение интерфейсов, могут вылезти боком. А скрытая причина может быть любая на ваш вкус: 1) рефлексия, а идентификатор сменил имя. 2) сериализация-десериализация, когда конфиг файл привязан к имени идентификатора 3) Bindings данных к UI сломать в два щелчка можно 4) Та же история с API запросами, когда объект приходит с сервера, а он уже отрефакторен.
Вот о чем я и говорю — у вас странный рефакторинг, который вносит ломающие изменения Потому и по рукам бьют, потому как это никакой не рефакторинг.
Вообще, странно, каким же ты чудом догадываешься, что именно биндается, а что — нет? Если ты обладешь этим знанием, то можно спокойно проверить изменения, которые предложил решарпер.
Если нет — ты в первом же багфиксе сломаешь ровно то же или больше.
U>Да в целом любая внешняя привязка, будь то БД, файл, API или что нибудь еще запросто валится при этом вашем рефакторинге. Вы мне сейчас начнете рассказывать про юнит-тесты и толпу QA которые все это прогоняют, но речь не об этом. Ты спросил — я ответил.
Я тебе страшную вещь скажу — рефакторинг это не панацея и как раз все внешние привязки рефакторингу не поддаются в общем случае. Но разве проект состоит из одних этих привязок?
> Когда работаешь один в цейтноте, то любые изменения требуют regression testing. А я один или еще с парой человек не буду этим заниматься.
Как ловко то. А если руками фиксануть, то такое изменение уже не требует таких тестов? Шикарно ты себя раскрыл
>И главная мысль — что решарпер не учитывает то, что происходит за пределами кода.
А разве где то говорилось, что решарпер позволяет бездумно вносить изменения?
I>>Это и есть основная причина, по которой ты не понимаешь Решарпер.
U>Заметь не только я. Тут еще дюжина коллег с аналогичным мнением. А упорно топишь за R# только ты. JetBrains Evangelist?
А если _внимательно_ посмотреть?
U>Я имел ввиду один проект — одну предметную область — один стек. Годами. Веселей смотреть как на заборе краска сохнет.
Именно. Все время лезешь в глубину, набираешься опыта, который короткими приложениями принципиально не берётся.
Здравствуйте, ukrspecs, Вы писали:
НС>>И ты такие проекты приводишь в качестве примера почему решарпер не нужен? Серьезно? U>Какие такие?
Однако за рефакторинг могли бить по рукам, задача обычно сводится к тому чтобы работало. А рефакторинг по дефолту — это что-то упустить и навернуть всю систему. Первое правило ж — работает — не трожь.
Здравствуйте, ukrspecs, Вы писали:
U>Вы наверное что-то путаете, или я чего-то незнаю, Xamarin — самостоятельная разработка компании под одноименным названием, на основе Моно. Идея эта пришла некоему Бразильцу U>Мигелю Де Иказа. Телерик — это из области создания UI компнонентов, из другой оперы совсем,
Здравствуйте, alexzzzz, Вы писали:
A>Здравствуйте, ukrspecs, Вы писали:
U>>Вы наверное что-то путаете, или я чего-то незнаю, Xamarin — самостоятельная разработка компании под одноименным названием, на основе Моно. Идея эта пришла некоему Бразильцу U>>Мигелю Де Иказа. Телерик — это из области создания UI компнонентов, из другой оперы совсем,
A>Мигель мексиканец, бывший.
Здравствуйте, ukrspecs, Вы писали:
U>Пол гига для простого чатика — это не то что много — это катастрофически неприемлимо. Тоже самое можно сказать и про Viber, Telegram и WhatsApp отчасти. Однако они нативные, не browser-based, насколько знаю.
Десктопный вацап — браузерный, со встроенным движком, причем отвратительно работающий; по памяти не смотрел, но может и жрет сравнимо. Без приложения, просто в браузере, он хотя бы не глючит.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Ну всё? Вы уже пришли к неизбежному осознанию того, что Решарпер не нужен?
Запомните, дети! Смотрите всегда в суть вещей. Resharper — это продукт на продажу. У него крайне косвенные цели "сделать ваш код лучше". В основном, его наполнение — это свистелки-перделки для галочки. Проф. разрабам они не нужны. А начинающие наговнокодят что с шарпером, что без. После осознания, что такое "продукт", отпадают все вопросы. Ну, разве что у вас у каждого по банке пива и вам всё равно, о чём спорить.
Здравствуйте, morgot, Вы писали:
M>Здравствуйте, ukrspecs, Вы писали: M>.. M>Он нужен нубам, не умеющим даже иф-елсе написать без IDE.
Да, вообще, навыдумывают синтаксисов языков, жизни не хватит, чтобы все изучить, еще и новый выдумывают чуть не каждый месяц.
Пора бы всё унифицировать