Современные IDE имеют множество хитростей, чтобы помочь с написанием кода, рефакторингом, поиском. Все они очень полезны, но редко какая-либо из них выглядит как настоящая «магия» и заставляет меня думать: «Ух ты! Как он это понял?»
Можете ли вы назвать какие-нибудь впечатляющие функции автоматизации кода (или других), которые поразили вас в первый раз, когда вы их увидели?
ide
automation
Serg
источник
источник
Ответы:
Отладка в обратном направлении
Visual Studio 2010 (а теперь и 2012) позволяет мне отлаживать в обратном направлении с помощью IntelliTrace.
Никогда больше мне не придется заново переживать момент, когда я нажимаю F10 слишком много раз, и мне приходится снова начинать отладку.
источник
Завершение кода
Когда все, что вы видели, это текстовый редактор, это впечатляет
источник
Способность ReSharper угадывать, что я хочу, переменная с именем продолжает удивлять меня. Вот очень простой пример, но вы поняли идею.
источник
foreach(var matche in regex.Matches(str))
, Также устанавливаетсяmatche
какobject
скорее, чемMatch
, не очень полезно.MatchCollection
это нетипизированная коллекция. Для правильных коллекцийvar
прекрасно работает. (Мне все еще не нравится это)Я был очень впечатлен инструментами рефакторинга Eclipse, когда впервые столкнулся с ними. Умение извлекать методы (которые, когда вы изучаете лучший дизайн - обычное явление) из большого куска кода и обрабатывать все для меня было довольно круто.
источник
Код Пузыри. http://www.andrewbragdon.com/codebubbles_site.asp
Я люблю Visual Studio и Eclipse за инструменты, которые они дают мне для изменения кода, но Code Bubbles действительно радует меня возможностью навигации и просмотра моего кода. Жаль, что это не общедоступно = - {
источник
Самая впечатляющая среда программирования, о которой я когда-либо слышал, - это операционная система Genera.
Вы можете нажать на любой виджет в оконной системе и получить полное считывание исходного кода и документации по элементу. Будучи динамическим языком программирования (Lisp), вы можете редактировать источник виджета на лету.
ZMACS из мира Lisp Machine по-прежнему считается лучшим редактором, чем Emacs, который является средой редактирования без равноправных.
источник
Визуально показывает структуру программы (программы / функции / процедуры / ...)
источник
Способность РеШарпера к рефакторингу. В полном раскрытии, я могу быть здесь за кулисами, поскольку я думаю, что Java с Eclipse уже некоторое время обладает подобным функционалом, но я не регулярно работаю с Java.
Разница в возможностях, которую ReSharper добавляет в Visual Studio, настолько велика, что это просто невероятно. Я знаю, что звучит как реклама, но я не думаю, что смогу когда-либо вернуться к использованию стандартной установки Visual Studio без ReSharper сверху.
В более общем смысле, семантическое понимание кода в любой день выбило бы из простого старого текстового редактора. Это приводит к таким вещам, как «найти использование переменной» или «встроенная функция» или «возможность использовать идиоматический шаблон» и т. Д.
источник
Отладчик Smalltalk:
В Smalltalk совершенно нормально тратить большую часть своего времени на написание кода из отладчика.
(Я помню, как меня унесло, когда я запустил метод, увидел что-то не так, изменил его и снова запустил метод, не перезапуская приложение в тот же день с Visual Age for Java ... потому что VA4J был написан на Visual Age for Smalltalk.)
Метод поиска Smalltalk
Метод Finder позволяет вам спросить "какое сообщение я могу отправить, чтобы получить эти параметры и получить этот результат?" Спросите это,
'abc'. 'def'. 'abcdeb'.
и это говорит вам'abc' , 'def' --> 'abcdef'
. Спросите это,#(0 1 2 3)
и это говорит#(0 1 2 3) sum --> 6
. * Отправители, разработчики всех вас, чтобы найти всех (*) отправителей сообщения или все объекты, которые реализуют это сообщение.(*) За исключением случаев, когда вы делаете такие вещи, как создание имен сообщений во время выполнения:
self perform: (#foo, #bar)
чтобы отправить себе сообщение#foobar
- в этом случае вы знаете, что делаете, и не возражаете против возможности подняться на свою собственную петарду.источник
Whyline
Whyline для Java действительно впечатлил меня, когда я увидел это. Это инструмент динамического анализа, который позволяет задавать вопросы о выходных данных программы, причем не только текста, но и графики. Например, вы можете спросить "почему эта линия была красной?" или "почему метод рисования не вызывается?"
Это работает путем инструментирования вашей программы и записи пробега. Например, предположим, что есть ошибка, которую вы можете воспроизвести. Вы управляете своей программой с помощью Whyline, запускаете программу в Whyline для воспроизведения ошибки, а затем, когда вы выходите из программы, вы можете использовать Whyline для проверки истории выполнения.
Эта запись и воспроизведение не новы, но то, как Whyline реализует это, довольно гладко. Вы можете просматривать историю в соответствии с конкретными событиями (например, фокусируясь только на событиях перетаскивания мышью или только на событиях нажатия клавиш). Он также связывает вывод с тем, какая часть программы напечатала его, поэтому вы можете переходить от вывода к коду.
Для работы он использует программную нарезку, так что вы можете сосредоточиться на тех частях кода, которые действительно актуальны. У CMU теперь есть патент на него, и я не знаю, каковы их планы, но я надеюсь, что мы сможем увидеть больше его в производстве. Это боров памяти, но это скорее всего потому, что это прототип, и он может улучшиться.
Вы должны увидеть демо онлайн, но вы также должны попробовать его сами, чтобы получить полный опыт. Во всяком случае, онлайн-демонстрации недооценивают эту идею.
источник
Я думаю, что самая впечатляющая особенность IDE, которую я видел, - это SyncEdit , который AFAIK доступен только в Delphi.
источник
То, что я хотел бы видеть в IDE, это следующие функции:
sheet[A3]
) и рисунки в коде и получать к ним доступ, как и к любой переменной.if
условий в виде таблицы (все еще поиск по ссылке).источник
Проверка типов для динамических языков
Пока ваш код не становится слишком «мета», среда IDE для Ruby или Python должна иметь возможность запускать фоновую задачу, которая:
Я еще не видел IDE, которая делает это.
источник
Я большой поклонник способности alt click multi line в Vs2010 - лучшее, что я нашел в новой версии.
источник
Auto Build от Eclipse - это функция, которой я больше всего восхищаюсь ... 7 лет назад. Теперь я просто принимаю это как должное.
источник
Xcode 4 исправляет точки с запятой и опечатки и использует стрелки, чтобы показать, как произошла ошибка.
Например:
Стрелка будет нарисована от
[a release]
до[a length]
показать , почему вы не можете использовать[a length]
.источник
Шаблоны кода и расширения, такие как DevExpress 'CodeRush. В C # создание
DependencyProperty
основной проблемы - это создание, поскольку синтаксис может быть многословным, но простой ввод «dp» вызывает что-то похожее на фрагмент, где вы вводите тип, имя и значение по умолчанию, и все остальное сделано, включая добавление любых необходимых «использующих» операторов и, возможно, ссылок на проекты, если память служит.Преимущество заключается в создании собственных шаблонов для кода, который вы часто используете или переписываете, например, в простых реализациях
INotifyPropertyChanged
свойств, где просто присваивают шаблону имя и тип свойства (если другой расширитель не обработал его), которое вы хотите использовать и обрабатывает все остальное, включая создание резервной переменной.источник
Пекс делает несколько довольно крутых автоматических генераций тестов. Он отслеживает ваш код, определяет точки ветвления, использует условный решатель для генерации входных данных, которые попадают в каждую возможную ветвь, а затем позволяет экспортировать результаты в виде повторяющихся модульных тестов. Это может унизить сложный код обработки строк.
источник
В Eclipse автоматически генерировать SEtters и getter, аналогично создавать методы в классе реализуемых из интерфейса.
источник
Поддержка IntelliJ Idea JPA
Укажите, что у вас есть DatabaseEntity:
теперь у вас есть несколько JPA-запросов
Через некоторое время вы увидите, что вы сделали опечатку в вашей сущности и решили реорганизовать lasname в lastName .
Эта среда также реорганизует JPA-запрос.
источник