Сделайте рубин на рельсах программистов рельсов?

Я программист на Java, который начал программировать Ruby on Rails год назад. Мне нравится язык, рельсы и принципы, лежащие в их основе. Но меня беспокоит то, что программисты Ruby, похоже, не рефакторируют.

Я заметил, что существует большой недостаток инструментов для рефакторинга в Ruby/Rails. Некоторые IDE, такие как Aptana и RubyMine, похоже, предлагают очень простой рефакторинг, но ничего действительно большого по сравнению с рефакторингом Eclipse Java.

Тогда есть еще один факт: большинство рельсов (даже профи) предпочитают некоторые легкие редакторы, такие как VIM или TextMate, вместо IDE. Ну, с помощью этих инструментов вы просто получаете нулевой рефакторинг (только регулярное выражение с find/replace).

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

Вы рефакторинг? Если да, то как вы это делаете, с помощью каких инструментов? Если нет, почему бы и нет?

Ответы

Ответ 1

Да.

Большинство программистов Rails сначала пробуют и следуют за тестом, записывают код для прохождения теста, а затем реорганизуют код ПЕРЕД тем, как они переходят к следующему тесту.

У ВСЕХ рельсов/рубиновых программистов... наверное, нет, но насколько "вибрация" или "чувство" в этом сообществе я бы сказал, что это то, что проповедуется и практикуется достаточно, чтобы это происходило больше раз, чем не.

Нет необходимости в IDEs imo. VIM, emacs и/или textmate достаточно для программистов Ruby и большинства рельсов. Я предполагаю, что Java нужно больше компилировать или что-то еще, что я знаю об этом, хотя, как я только программировал в Ruby. Почему все программисты Java используют IDE (поскольку я обобщаю).

Ответ 2

Определенно, да, существует разная причина диспаритета инструмента


IDE более практична для Java

Строгая типизация и документированная грамматика Java позволяют писать инструменты IDE для анализа языка

Рубиновая утка и типичная грамматика источника Yacc-источника делают это довольно трудным.

IDE больше необходима для Java

Java verbosity делает возможности написания кода и перезаписи кода желательными.

Ruby чрезвычайно кратковременный характер в сочетании с объявлениями типа "нет-типа" (конечно, они появляются в строке с Type.new) делают такие вещи необязательными.

Сочетание двух...

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

Отказ от vi (1) для IDE - это то, что я бы предпочел не делать, но я делаю это с Java, потому что мне нужна среда IDE для написания реализаций интерфейса и т.д., и тот факт, что он анализирует Java, делает его полезным в коде завершение. Поскольку с Ruby это не может и мне это не нужно, я придерживаюсь vi (1) и TextMate.

Резюме

Поскольку вы не захоронены в коде, возможно рефакторинг с несколькими разумными изменениями. Но в то время как на тему "других разработчиков Ruby" мой вопрос Ruby: почему все (кроме меня, похоже) используют функцию parens? Потому что в нескольких процентах ситуаций они необходимы, и поэтому "несогласованность" вызывает беспокойство?

Ответ 3

Разработчики RoR делают рефакторинг. Но самое главное, они делают это, потому что они могут сделать это легко.

Если вы придерживаетесь основного принципа RoR - не повторяйте себя - и потратили некоторое время на разработку кода (что означает, что вам не удалось создать огромный кусок монолитного кода), ничто не может помешать вам переписать кусок кода, что бы вы ни думали (обобщение, ускорение, улучшение удобочитаемости и т.д.). Встроенная функция тестирования/тестирования/профилирования Rails находится на вашем сервисе, чтобы проверить, достигли ли вы своей цели, не жертвуя уже существующей и функциональной функциональностью.

Редактор полностью не зависит от кода, поэтому вы даже можете использовать Notepad для кодирования (я не фанатик командной строки, я предпочитаю немного более "графических" редакторов, таких как Gedit).

Ответ 4

Проведя много времени как в Java, так и в Ruby (с небольшим количеством назад и вперед в последнее время, от Eclipse до /from Textmate), я согласен, что некоторые виды рефакторингов в Ruby сложнее. Это меньше связано с более слабыми IDE для Ruby, чем с фактом статической типизации и динамической типизацией, а также сложностью написания инструментов рефакторинга для динамического языка. В большинстве случаев рефакторинг с ручным/регулярным выражением проще в Ruby, чем в Java из-за сложности Ruby-кода - там всего меньше - но, тем не менее, что-то простое, как переименование метода, не так прямолинейно в Ruby, как в Java. Преимущества Ruby против Java - это (imo) больше (и вам нужно будет всего лишь использовать Ruby в течение нескольких месяцев, чтобы получить реальное представление о том, насколько вам понравится), но один из недостатков отсутствие такого же надежного рефакторинга, с которым вы привыкли в таких инструментах, как IDEA и Eclipse.

РЕДАКТИРОВАТЬ: И чтобы быть понятным - я не делаю рефакторинга в Ruby как таковую, чем Java, но мне кажется, что это меньше для Ruby. Но когда я делаю, я полагаюсь на модульные тесты, а не на компилятор, как на Java.