Как стать более продуктивным, используя Scala? (Инструменты, IDE) - PullRequest
22 голосов
/ 27 февраля 2010

Какие инструменты вы, люди, используете для работы со Scala? Для фазы обучения я использовал Scala REPL, взломал код с TextMate и скомпилировал его с помощью scalac CLI. Но по мере роста проектов требуются все более сложные инструменты.

Мне известны плагины Scala для Elipse, IntelliJ и Netbeans, и я попробовал их все. Лучший из них - IMHO IntelliJ, но все еще далек от совершенства.

Основная проблема, с которой я столкнулся, - это отсутствие автозаполнения. Как не очень продвинутый Scala-кодер, я до сих пор не знаю всего стандартного API и вынужден регулярно переключаться между Scaladoc и IDE. Это похоже на «убийственную производительность». Но все они не могут автоматически заполнить аргументы метода. (Я слышал, что аргументы метода не включены в скомпилированный scala-код, но как насчет того, чтобы присоединить источник для автоматического завершения?)

Другая очень раздражающая проблема - это процесс сборки. Я использую Maven для создания своих проектов Scala и управления их зависимостями. Но, тем не менее, я должен сделать полную перестройку, чтобы проверить мои изменения. Возможно, меня избаловала инкрементная перестройка Eclipses, доступная в мире Java, но мне кажется, что это большая проблема.

Мне очень нравится Scala, и я чувствую гораздо более продуктивным при кодировании, но отсутствие сложных инструментов позволяет мне чувствовать себя менее продуктивным. И оба, похоже, сами себя компенсируют.

Итак, какой у меня вопрос? Я сомневаюсь, что каждый программист Scala использует добрые vim или emacs вместе с scalac для выполнения своей работы. Так какие инструменты вы используете? Какие рабочие процессы вы разработали для ускорения разработки на языке Scala?

Редактировать

Уточнение с помощью автозаполнения аргументов метода.

val myList = "foo" :: "all your base" :: Nil
myList.partition(_.length > 3)

В приведенном выше коде IntelliJ не предоставил мне информацию, которая требуется для раздела, чтобы я передал функцию () => Boolean. На самом деле IntelliJ не проверяет это противоречие. Я могу передать String, и IntelliJ не покажет мою ошибку, пока я не выполню компиляцию.

Ответы [ 8 ]

15 голосов
/ 27 февраля 2010

scalac

Познакомьтесь с параметрами командной строки для Scalac.

  • -deprecation
  • -Xprint:all: следите за тем, как ваш код проходит через фазы компилятора, очень полезно посмотреть, какие последствия применяются.
  • -help / -X' / -Y` перечислить все опции.

Последние ночные сборки scalac включают файл завершения bash, который упрощает их использование.

IntelliJ IDEA

Завершение метода с помощью Javadoc ( CTRL - Пробел , CTRL - Q / Apple-J) Снимок экрана

Параметр Info для примера в вопросе ( CTRL - P ) Снимок экрана

Метод Аргумент Завершение ( CTRL - SHIFT - Пробел ). Скриншот

Чтобы увидеть Javadoc, вам нужно связать источник или javadoc с зависимостями в IntelliJ.

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

Simple Build Tool

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

  • Непрерывная компиляция: >~compile
  • Непрерывная компиляция + тест: ~test-quick

У меня есть проект SBT и IntelliJ, настроенный в http://github.com/scalaz/scalaz,, вы можете использовать это как справку.

6 голосов
/ 27 февраля 2010

Я использую Scala ежедневно в течение последних шести месяцев. Я все еще использую vim (и ctags для поиска вещей) и Maven для сборок. Я получил хороший результат из JRebel при работе с веб-приложениями Lift - он перезагрузит изменения на лету без перезапуска сервера.

Я потратил некоторое время на изучение IDE, но это очень удручало. Сначала я действительно пропустил много функций Eclipse, но после периода настройки я не думаю, что теперь я значительно менее продуктивен.

Я слышал некоторые грохоты о том, что NetBeans является действующим чемпионом для Scala IDE, но я не пробовал это на собственном опыте.

4 голосов
/ 27 февраля 2010

Один простой способ - использовать fsc , автономный компилятор. Он поддерживает кеширование информации, и стандартный компилятор будет общаться с fsc (работает как демон) и использовать его кэшированную информацию во время компиляции, тем самым ускоряя ваш цикл компиляции.

3 голосов
/ 10 октября 2010

Вот мой ответ на похожую тему . После предоставления около часа Ensime . Я просто не могу помочь, но выслушаю слово. Я должен сказать, что это очень, очень хорошо написано для пакета Emacs.

2 голосов
/ 10 октября 2010

Вы также должны попробовать Netbeans 6.8 в ночной сборке Scala. Я очень доволен программированием Scala с помощью этой IDE. Для строительства я иногда также использую Ant. Самое замечательное в плагине NB Scala - это то, что он быстрый и безошибочное выполнение кода.

Для примера, который вы дали: NB дает мне эту ошибку

alt text

код завершения строительства:

alt text

2 голосов
/ 28 февраля 2010

В Scala 2.8 см. это , чтобы узнать, как улучшить производительность Maven.

2 голосов
/ 27 февраля 2010

Боюсь, вам нужно подождать, пока Скала не станет твердой. У меня была точно такая же проблема с Java десять лет назад. Это было еще хуже.

Я тоже их всех перепробовал. Для Scala 2.7.7 IntelliJ - победитель, но для Scala 2.8.0-SNAPSHOT Eclipse не так уж и плох. Подождите пол года после выпуска 2.8.0 и проверьте снова. Это должно стать терпимым.

0 голосов
/ 23 июля 2013

Eclipse Scala IDE уже достаточно развит (по состоянию на 3.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...