Использование CoffeeScript в рабочей среде

Мне очень нравится использовать CoffeeScript (1.1.1) для небольших проектов, и до сих пор он отлично развился. Однако, прежде чем использовать его в более широкой среде, я хотел бы услышать второе мнение об использовании его в производстве.

Итак, мои вопросы:

  • Насколько стабилен сам язык?
  • Нужно ли мне следить за предстоящими изменениями, которые нарушат мой код?
  • Если ответ "да" на вопрос выше: насколько хорошо поддерживаются более старые версии?
  • Существует ли стабильная (только исправление ошибок) и отдельная ветвь разработки?
  • Если вы уже использовали CoffeeScript в своем продукте/веб-сайте/etc, пожалуйста, опишите область применения и общий опыт.

Спасибо!

Примечание. Я уже слышал, что "поддержка CoffeeScript будет включена в Ruby on Rails версии 3.1". (Wikipedia), что отлично по причине дополнительной поддержки сообщества Rails.

Ответ 1

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

Я бы сказал, что лучшие способы избежать проблем с версией -

  • Убедитесь, что вы документируете версию CoffeeScript, в которой был написан ваш проект, и
  • Скомпилируйте JS в этой версии и сохраните JS где-нибудь.
  • Хорошее тестовое покрытие (по словам Самуэля Адамса: Всегда хорошее решение!)

Таким образом, когда выпущена новая версия CoffeeScript, у вас есть резервная копия JS для использования в случае нарушения кода CoffeeScript. Нарушение изменений - это боль, но они являются общей для почти всех языков, кроме JavaScript, - просто попросите рубиста, который недавно совершил переход с 1,8 до 1,9, или Pythonista, которые все еще переносят свой код Python 2 на Python 3.

Совет, который я могу дать для предотвращения нарушения вашего кода при изменениях версии CoffeeScript, заключается в том, чтобы избежать ситуаций с синтаксическим краем. Например, func a:b, c означает func {a:b, c:c}, а теперь это означает func {a:b}, c. Это улучшение (прежнее поведение считалось ошибкой), но некоторые люди были застигнуты врасплох. Поэтому используйте явную пунктуацию, когда есть намек на двусмысленность; он все равно делает для более удобочитаемого кода.

Джереми придется прокомментировать различие stable/master, так как оба ветки существуют, но stable не обновлялся с апреля (pre-1.1.0).