Это было странно для меня; в моем случае, исходя из фона C/C++.
Что для меня щелкнуло, так это то, что вы можете значительно сократить время итерации с помощью нескольких настроек вашей рабочей среды. Идея состоит в том, чтобы уменьшить его достаточно, чтобы вы могли писать код в небольших кусках и очень часто тестировать свой код.
Об отсутствии проверки времени компиляции: Вы привыкнете к этому. Подобно значительным пробелам, отсутствие проверки типа времени компиляции просто тает через несколько недель. Трудно сказать, как именно, но, по крайней мере, я могу сказать вам, что это произошло для меня.
О недостатке интерфейсов: Это сложный вопрос. Было бы неплохо получить дополнительную помощь в более крупных системах, чтобы напомнить вам о внедрении целых интерфейсов. Если вы обнаружите, что вы действительно теряете много времени, вы можете написать свои собственные проверки времени выполнения и вставить их там, где это необходимо. Например. если вы зарегистрируете свои объекты с помощью центрального менеджера, это будет подходящее время для обеспечения того, чтобы объекты соответствовали роли, которую они представляют.
В общем, хорошо иметь в виду, что у вас есть способности приличного отражения.
Об отсутствии инкапсуляции: Учитывая, что coffeescript реализует очень хорошую оболочку класса для прототипа, я предполагаю, что вы имеете в виду отсутствие частных переменных? На самом деле существует несколько способов скрыть детали от клиентов, если вы чувствуете необходимость, и я это делаю; как правило, чтобы остановить себя от стрельбы по ноге в будущем. Ключ, как правило, заключается в том, чтобы сбежать от предметов в закрытых помещениях.
Также обратите внимание на Object.__defineGetter__
/Object.defineProperty?
В этих ситуациях может помочь многозадачность и сеттер.
О снижении итерационный время:
Я с помощью встроенного в файл сторожа в кофе, чтобы компилировать скрипты на изменения. В сочетании с возможностью TextMate сохранять все открытые файлы при потере фокуса это означало, что тестирование было связано с переключением с textmate на chrome/firefox и обновлением. Довольно быстро.
В проекте node.js, однако, я настроил свои представления только для компиляции и обслуживания на лету, поэтому даже наблюдатель файлов лишний. Они кэшируются в выпуске, но в режиме отладки они всегда перезагружаются с диска, перекомпилируются и, сталкиваясь с ошибками, я просто обслуживаю их. Итак, теперь каждые несколько минут я переключаюсь в браузер, нажимаю обновление и либо вижу, что работает тест, либо ошибки компилятора.
Это не ответ, но чтобы быть продуктивным в coffeescript, вы действительно должны быть очень хорошо знакомы с Javascript. Если вы этого не сделаете, опыт отладки действительно может быть болью. –
Я знаком с Javascript и Coffeescript - я могу определить ошибки на основе поведения приложения, и я понимаю большинство странных частей Javascript. Это больше, что я продолжаю делать те же ошибки/ошибки, которых я не хотел бы на статически типизированном языке. Я не знаю, поможет ли использование определенного стиля кодирования (что упростило типы и затруднило бы сделать простые ошибки опечаток и типа), но на данный момент я не могу поверить, что это не то, что кто-то уже решена. – laurencer
Автоматическое тестирование имеет решающее значение при работе с динамическими языками. Наличие хорошего набора тестов очень полезно при обнаружении ошибок при внесении изменений в приложение. – Andrew