Каковы наиболее впечатляющие трюки, которые IDE может осуществить с помощью кода? [закрыто]


18

Современные IDE имеют множество хитростей, чтобы помочь с написанием кода, рефакторингом, поиском. Все они очень полезны, но редко какая-либо из них выглядит как настоящая «магия» и заставляет меня думать: «Ух ты! Как он это понял?»

Можете ли вы назвать какие-нибудь впечатляющие функции автоматизации кода (или других), которые поразили вас в первый раз, когда вы их увидели?


3
Хороший вопрос, хотелось бы увидеть больше ответов ... Баунти!
Тамара Вийсман

Я не знаю, должен ли это быть ответ, но почему я не вижу упоминаний IntelliJ IDEA ?
Марк C

5
Настоящие программисты используют бабочек.
rightfold

Предотвратите меня от создания ошибок;)
Трэвис Кристиан

это не должно быть закрыто, это идеальный вопрос для
меня

Ответы:


29

Отладка в обратном направлении

Visual Studio 2010 (а теперь и 2012) позволяет мне отлаживать в обратном направлении с помощью IntelliTrace.

Никогда больше мне не придется заново переживать момент, когда я нажимаю F10 слишком много раз, и мне приходится снова начинать отладку.


2
Я еще не использовал это, но я хочу.
AShelly

Я тоже этим не пользуюсь (я использую RAD Studio для Delphi), но это похоже на мечту. (Но является ли это верным ответом на этот вопрос? Это скорее функция отладчика, чем функция редактора кода. Что ж, это часть IDE, так что, может быть ...)
Андреас Рейбранд,

+1000: это так полезно.
Каллум Роджерс

Есть ли у него команда COME FROM? :)
Joonas Pulakka

2
проблема в том, что вы можете сделать это только с языками MS (управляемыми), а не с C ++, например
откройте путь

16

Завершение кода

Когда все, что вы видели, это текстовый редактор, это впечатляет


3
На самом деле не все так впечатляюще, вы можете сделать это, просто проанализировав файл TAGS.
альтернатива

2
То , что я , как это хиппи расширения ... это глубоко более полезным для меня , чем завершение кода.
Пол Натан

2
@mathepic А сколько именно людей знают, что делают это?
TheLQ 23.09.10

2
Это впечатляет, если вы программируете со времен мэйнфреймов.
AShelly

4
Ребята, если вы не находите этот ответ привлекательным, пожалуйста, голосуйте за другой ответ, а не соглашайтесь в комментариях. Это субъективный вопрос, поэтому ответы, скорее всего, тоже будут.
JBRWilkinson

16

Способность ReSharper угадывать, что я хочу, переменная с именем продолжает удивлять меня. Вот очень простой пример, но вы поняли идею.

альтернативный текст


1
Не могли бы вы, может быть, привести несколько примеров для тех, кто никогда не видел это в действии (я)
serg

9
Если ваш текстовый редактор может заменить вас при написании кода, у меня есть плохие новости ...
P Shved

3
foreach(var matche in regex.Matches(str)), Также устанавливается matcheкак objectскорее, чем Match, не очень полезно.
Каллум Роджерс

1
@Callum: правда, но это только потому, что MatchCollectionэто нетипизированная коллекция. Для правильных коллекций varпрекрасно работает. (Мне все еще не нравится это)
конфигуратор

1
это особенность и в затмении.
НимЧимпски

12

Я был очень впечатлен инструментами рефакторинга Eclipse, когда впервые столкнулся с ними. Умение извлекать методы (которые, когда вы изучаете лучший дизайн - обычное явление) из большого куска кода и обрабатывать все для меня было довольно круто.


12

Код Пузыри. http://www.andrewbragdon.com/codebubbles_site.asp

Я люблю Visual Studio и Eclipse за инструменты, которые они дают мне для изменения кода, но Code Bubbles действительно радует меня возможностью навигации и просмотра моего кода. Жаль, что это не общедоступно = - {


2
Вау. Это видео ... я пускаю слюни. Могу ли я получить это для C ++, пожалуйста?
2010 года

Я ничего не могу сказать, кроме вау.
Icode4food

1
+1 Хотя мне не нравится нынешний графический интерфейс, сама концепция довольно удивительна ...
Тамара Вийсман

это действительно работает? небольшие коробки с частью кода. Чтобы использовать его, вам понадобится монитор размером с стену.
IAdapter 19.10.10

Я надеюсь, что это никогда не будет реализовано в Emacs. Моему левому мизинцу это не понравится.
праву,

7

Самая впечатляющая среда программирования, о которой я когда-либо слышал, - это операционная система Genera.

Вы можете нажать на любой виджет в оконной системе и получить полное считывание исходного кода и документации по элементу. Будучи динамическим языком программирования (Lisp), вы можете редактировать источник виджета на лету.

ZMACS из мира Lisp Machine по-прежнему считается лучшим редактором, чем Emacs, который является средой редактирования без равноправных.


Моя первая компьютерная работа после университета работала с рабочей станцией символики (используя роды), поверьте мне, есть причина, по которой она не завоевала популярность!
FinnNk

3
О, сделайте уточнение!
Марк C

да, я хотел бы знать, почему Genera также не
завоевал популярность

@FinnNk: Может быть, вы могли бы уточнить?
Пол Натан

6

Визуально показывает структуру программы (программы / функции / процедуры / ...)

альтернативный текст


Какой это редактор?
Пол Натан


Не повезло ... (Вы получили письмо в тот самый момент, когда сделали снимок экрана.) Но это не очень продвинутая функция. Конечно, это, вероятно, очень полезно, но не очень «впечатляюще» (вообще).
Андреас Рейбранд

@ Андреас Рейбранд - Извините, Андреас, но что за почта? Какой скриншот? Боюсь, я не понимаю о чем ты говоришь.
Ладья

@Rook: он говорит об изображении в вашем ответе и о маленькой синей рамке в правом нижнем углу, которая выглядит как электронное уведомление от Outlook. , ,
Тим Гудман

4

Способность РеШарпера к рефакторингу. В полном раскрытии, я могу быть здесь за кулисами, поскольку я думаю, что Java с Eclipse уже некоторое время обладает подобным функционалом, но я не регулярно работаю с Java.

Разница в возможностях, которую ReSharper добавляет в Visual Studio, настолько велика, что это просто невероятно. Я знаю, что звучит как реклама, но я не думаю, что смогу когда-либо вернуться к использованию стандартной установки Visual Studio без ReSharper сверху.

В более общем смысле, семантическое понимание кода в любой день выбило бы из простого старого текстового редактора. Это приводит к таким вещам, как «найти использование переменной» или «встроенная функция» или «возможность использовать идиоматический шаблон» и т. Д.


Однажды на работе мне сказали: «Друзья не позволяют друзьям программировать без ReSharper».
Фрэнк Шиарар

4

Отладчик Smalltalk:

  • Полный доступ ко всему стеку вызовов (Что это была за переменная экземпляра отправителей этого объекта 3 в стеке?)
  • Отредактируйте тестируемый код в отладчике, перезапустите и продолжите выполнение программы, как будто ничего не произошло.

В 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- в этом случае вы знаете, что делаете, и не возражаете против возможности подняться на свою собственную петарду.


4

Whyline

Whyline для Java действительно впечатлил меня, когда я увидел это. Это инструмент динамического анализа, который позволяет задавать вопросы о выходных данных программы, причем не только текста, но и графики. Например, вы можете спросить "почему эта линия была красной?" или "почему метод рисования не вызывается?"

Это работает путем инструментирования вашей программы и записи пробега. Например, предположим, что есть ошибка, которую вы можете воспроизвести. Вы управляете своей программой с помощью Whyline, запускаете программу в Whyline для воспроизведения ошибки, а затем, когда вы выходите из программы, вы можете использовать Whyline для проверки истории выполнения.

Эта запись и воспроизведение не новы, но то, как Whyline реализует это, довольно гладко. Вы можете просматривать историю в соответствии с конкретными событиями (например, фокусируясь только на событиях перетаскивания мышью или только на событиях нажатия клавиш). Он также связывает вывод с тем, какая часть программы напечатала его, поэтому вы можете переходить от вывода к коду.

Для работы он использует программную нарезку, так что вы можете сосредоточиться на тех частях кода, которые действительно актуальны. У CMU теперь есть патент на него, и я не знаю, каковы их планы, но я надеюсь, что мы сможем увидеть больше его в производстве. Это боров памяти, но это скорее всего потому, что это прототип, и он может улучшиться.

Вы должны увидеть демо онлайн, но вы также должны попробовать его сами, чтобы получить полный опыт. Во всяком случае, онлайн-демонстрации недооценивают эту идею.


3

Я думаю, что самая впечатляющая особенность IDE, которую я видел, - это SyncEdit , который AFAIK доступен только в Delphi.


Разве это не просто переименование участников? Затмение делает это на месте. Редактировать: О, я вижу, вы можете сделать это в рамках выбора.
Мэтт Оленик

1
Он есть и в Eclipse (используйте его постоянно). Полезно - очень. Волшебный - не так уверен.
Сергей

@Serg: О, у Eclipse тоже есть? Я бы не знал; Я не использую Java. Я знаю, что VS не имеет его ...
Мейсон Уилер

@Matt: Вы можете сделать это в выделенном фрагменте, и поскольку вы можете сделать это в выделенном фрагменте, вы можете сделать это для любой части файла, сколько захотите. Он не ограничен областью действия или другими ограничениями, которые парсер рефакторинга наложил бы на переименование члена.
Мейсон Уилер

У Netbeans это тоже есть. Обычно ctrl-r.
Алан Пирс

2

То, что я хотел бы видеть в IDE, это следующие функции:

  • Показать код так, как я привык (независимо от того, как он на самом деле отформатирован)
  • Позволяют встраивать таблицы (скажем, электронную таблицу Excel, где я могу читать значения ячеек sheet[A3]) и рисунки в коде и получать к ним доступ, как и к любой переменной.
  • Позвольте опускать фигурные скобки и другой ненужный код, который только там, чтобы сделать синтаксический анализ счастливым.
  • Поиск кода с помощью Google-подобного движка (особенно получение результатов поиска в течение 35 мс)
  • Отображение сложных ifусловий в виде таблицы (все еще поиск по ссылке).
  • Инструменты рефакторинга, которые могут найти похожий код, извлечь различия и уменьшить их до макс.
  • Поддержка генерации кода при соблюдении правил языка (подумайте: создайте все методы получения и установки для классов Java, если метод с тем же именем уже существует или зависит от аннотаций)

«Создайте все методы получения и установки для классов Java, если метод с тем же именем уже не существует» Я думаю, что Eclipse сделает это ...
Hila

Совместимы ли цели «Показать код так, как я привык» и «Разрешить пропуск фигурных скобок»?
TRiG

@ Хила: Да, но код виден . Я хотел бы, чтобы компилятор просто генерировал их при компиляции исходного кода Java; Я не хочу, чтобы они загромождали источник.
Аарон Дигулла

@TRiG: ИМХО, между ними большое совпадение. Я делаю отступ для всего своего кода; брекеты совершенно бесполезны.
Аарон Дигулла

Если, возможно, среда IDE сохраняет скобки, но не отображает их, это может сработать.
TRiG

2

Проверка типов для динамических языков

Пока ваш код не становится слишком «мета», среда IDE для Ruby или Python должна иметь возможность запускать фоновую задачу, которая:

  • для данной функции определяет все возможные классы, которые будут переданы в качестве аргументов
  • для этих классов гарантирует, что они отвечают на все методы, вызываемые этой функцией
  • представляет список несовместимых классов с отсутствующими методами, которые необходимо реализовать

Я еще не видел IDE, которая делает это.


Вы имеете в виду, что вы не видели R / P IDE, которая делает эту или какую-либо IDE вообще?
Марк C

Я никогда не видел это нигде, но я тоже не выглядел очень усердно.
AShelly

RoelTyper от Roel Wuyts и Chuck от Lex Spoon сделали / сделали такой анализ для Squeak.
Фрэнк Шиарар

Это, вероятно, должно быть построено на какой-то системе вывода типов, на языке, который никогда не был разработан для вывода типов.
Ли Райан


2

Auto Build от Eclipse - это функция, которой я больше всего восхищаюсь ... 7 лет назад. Теперь я просто принимаю это как должное.


Intellij только что получил это в версии 12. Практически единственное, что затмение делает лучше
NimChimpsky

2

Xcode 4 исправляет точки с запятой и опечатки и использует стрелки, чтобы показать, как произошла ошибка.

Например:

NSString *a = [[NSString alloc] init];
[a release];
int l = [a length];

Стрелка будет нарисована от [a release]до [a length]показать , почему вы не можете использовать [a length].


Это поведение до статического анализатора лязг. Вы можете запустить его как отдельную команду и просмотреть вывод в браузере. Никаких причудливых стрелок.
Будет

1

Шаблоны кода и расширения, такие как DevExpress 'CodeRush. В C # создание DependencyPropertyосновной проблемы - это создание, поскольку синтаксис может быть многословным, но простой ввод «dp» вызывает что-то похожее на фрагмент, где вы вводите тип, имя и значение по умолчанию, и все остальное сделано, включая добавление любых необходимых «использующих» операторов и, возможно, ссылок на проекты, если память служит.

Преимущество заключается в создании собственных шаблонов для кода, который вы часто используете или переписываете, например, в простых реализациях INotifyPropertyChangedсвойств, где просто присваивают шаблону имя и тип свойства (если другой расширитель не обработал его), которое вы хотите использовать и обрабатывает все остальное, включая создание резервной переменной.


1

Пекс делает несколько довольно крутых автоматических генераций тестов. Он отслеживает ваш код, определяет точки ветвления, использует условный решатель для генерации входных данных, которые попадают в каждую возможную ветвь, а затем позволяет экспортировать результаты в виде повторяющихся модульных тестов. Это может унизить сложный код обработки строк.


Ницца! Хотя, я надеюсь, он будет использоваться больше для генерации тестовых данных, а не для полного тестового примера ! [Тестовые данные + Ожидаемый результат = Тестовый случай.] То есть автоматическое генерирование ожидаемого результата означает, что на самом деле тестирование не является тем, что вы думаете. Это должно быть проверено кем-то, кто знает спецификацию.
Макнейл

1

В Eclipse автоматически генерировать SEtters и getter, аналогично создавать методы в классе реализуемых из интерфейса.


1

Поддержка IntelliJ Idea JPA

Укажите, что у вас есть DatabaseEntity:

@Entity
public class Customer{
[...]
String lasName;
[...]

теперь у вас есть несколько JPA-запросов

Query q = "selecct s from Customer c where c.lasName=:lastName"

Через некоторое время вы увидите, что вы сделали опечатку в вашей сущности и решили реорганизовать lasname в lastName .

Эта среда также реорганизует JPA-запрос.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.