Я, наверное, ужасный человек, чтобы говорить об этом, так как я нахожу использование таких IDE, как программирование со свинцовыми гирями на руках, но я полагаю, что было бы полезно получить представление об этой стороне забора.Любые интересные или экспериментальные идеи, с которыми сталкиваются люди, все еще должны иметь дело с основными потребностями инструментов разработчика.
Обычно среда IDE - это своего рода редактор, отладчик и компилятор.Так как это три отдельные части инструмента, я пробежусь по ним отдельно
Вот что я хочу от редактора:
- , чтобы быть быстрым.Я никогда не хочу ждать загрузки вещей.ever.
- дайте мне мощные способы манипулировать и прыгать в коде.Меня не волнует изучение кривых, когда это инструмент, которым я пользуюсь, в среднем, по 10 часов в день, с другой стороны, я не хочу тратить свое время на освоение не мощных инструментов.
- дай мне приличный способ открывать файлы.Диалоги открытых файлов недостаточно хороши, как и деревья проектов.
- хорошая поддержка для одновременного открытия многих вещей.У меня 27-дюймовый экран, вкладок далеко не достаточно. В настоящее время я живу со сплитами, но было бы нетрудно придумать что-нибудь получше.
- никогда не заставляю меня трогать мышь при редактировании кода.Мне не нужны кривые обучения, мне нужны скорость, эффективность и мощность.
- Если вы дадите мне визуальный дизайнер, это сделает меня более продуктивным, чем печатать, создавая код с тем же самымуровень гибкости, который я могу создавать с помощью текста. Мне еще предстоит найти визуального дизайнера, который бы это делал, каждый, кого я когда-либо использовал, в основном понижает планку обучения тому, как что-то делать, но заставляет вас платить за ремонтопригодностьи гибкость. Я рассматриваю каждый пример программирования, рисуя картинки, которые у меня бывают неудачными, если они используются для серьезных целей (то есть не просто для того, чтобы что-то ударить и не заботиться о качестве)
- автоматизированный рефакторинг. Iсейчас я использую vim, и мне не хватает возможности извлекать методы из других методов.ds, или нажмите кнопку, чтобы переименовать что-то и чувствовать себя в безопасности с тем, что будет делать инструмент.
- анализ кода.Я хочу видеть синтаксические ошибки по мере их появления, видеть, набираю ли я избыточный код, или видеть предложения, если есть лучший способ что-то сделать.
- отличный тестовый бегун.Я практикую TDD, и плохие тестировщики гонят меня вверх по стене, поскольку это оказывает такое влияние на все, что я делаю.
что я хочу от отладчика
- aРЕПЛ.это сводило меня с ума, когда я застрял в визуальной студии, и я, вероятно, провел больше времени в непосредственном окне, чем кто-либо другой в команде.Весь смысл отладчика заключается в способности исследовать, что происходит во время выполнения, если я не могу набрать произвольный код и посмотреть, к чему он относится, я чувствую, что у меня одна рука связана за спиной
- способность менять код на лету, хотя с приличным REPL и языком, такого рода заботится о себе
- способность двигаться вперед и назад при исполнении.
- скорость, не заставляй меня ждать
- хорошие способы прыгать в коде.если я нахожусь в строке 1 и хочу перейти к строке 500, чтобы увидеть, что происходит, я смогу сделать это
, что я хочу от компилятора
- скорость, по крайней мере, в режиме разработки.Google Go может скомпилировать 500, 000 loc в миллисекундах на ноутбуке, это то, о чем я говорю.Если язык должен быть скомпилирован, то каждое второе нажатие на вывод компилятора только усложняет выполнение того, что вы делаете (отслеживание ошибки, тестирование функции, запуск тестов и т. Д.)
- вам нужнокакой-то способ подключиться к произвольным методам для предварительного и последующего выполнения или предварительной обработки ваших файлов кода в более общем виде (например, макросы lisp reader).если вы не можете сделать это с языком, вы должны быть в состоянии сделать это с помощью компилятора
- хороший анализ. скажите мне, где я облажался во время компиляции, если вы не можете поймать его раньше
- прозрачность. я действительно даже не хочу знать его там, если я не взаимодействую с ним напрямую.
Что у меня есть
В настоящее время я использую vim, который дает мне 1, 2, 3 (с fuzzyfinder.vim / rails.vim), 4, 5 и очень плохие 8 (с syntastic.vim). У меня нет рефакторинга или анализа кода, и я действительно скучаю по нему, но IMO это больше, чем компромисс.
для отладки я использую ruby-debug, который на самом деле не так уж и хорош. в основном вы получаете 1, 2 (больше причины ruby, чем ruby-debug) и 3, но это так.
Больше не пользуйтесь компилятором (слава богу), но не пользуйтесь им после того, как его использовали в течение 7 лет (по крайней мере, профессионально), действительно подчеркивает, какое ужасное влияние они оказывают на процесс разработки.