Как стать продуктивным в Coffeescript? - PullRequest
2 голосов
/ 17 января 2012

Я хочу улучшить свой стиль кодирования Coffeescript.Когда я программирую в Scala, я могу написать модуль через час или два, запустить его и иметь только несколько незначительных ошибок, которые я могу быстро выявить и исправить.

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

Гораздо сложнее абстрагировать и инкапсулировать функциональность из-за отсутствия интерфейсов и многих других OO-функций.

Существуют ли шаблоны проектирования, которые заменяют инкапсуляцию / абстракцию, обычно предоставляемыепо ОО?Или есть учебник для начинающих / руководство о том, как мыслить более Coffeescript-y (или как решать проблемы, используя прототипный подход)?

Что вы сделали, чтобы стать более продуктивным в Coffeescript (или Javascript -возможно даже какие-нибудь динамически типизированные языки)?

Ответы [ 3 ]

7 голосов
/ 18 января 2012

Если вы используете статически типизированный, ориентированный на классы язык, такой как Java или Scala, изучение JavaScript / CoffeeScript будет непростой задачей.Компилятор не помогает вам почти так же, а это значит, что вам нужно несколько минут, чтобы обнаружить небольшие ошибки, а не секунды.

Если это ваше основное узкое место, то я бы предложил использовать кодирование, более ориентированное на тестированиеметодология.Используйте такую ​​библиотеку, как QUnit , чтобы написать небольшие тесты для каждой части функциональности, которую вы разрабатываете.При правильном использовании этот стиль дает те же преимущества, что и статический компилятор, без ущерба для гибкости динамического языка.

1 голос
/ 18 января 2012

Это было странно и для меня;в моем случае это фон C / C ++.

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

При отсутствии проверок времени компиляции: Вы привыкнете к нему,Как и значительный пробел, отсутствие проверки типов во время компиляции просто тает через несколько недель.Трудно сказать, как именно, но, по крайней мере, я могу вам сказать, что это случилось со мной.

По поводу отсутствия интерфейсов: это сложно.Было бы неплохо получить немного больше помощи в больших системах, чтобы напомнить вам о реализации целых интерфейсов.Если вы обнаружите, что вы действительно тратите на это много времени, вы можете написать свои собственные проверки времени выполнения и вставить их в случае необходимости.Например, если вы регистрируете свои объекты у центрального менеджера, это было бы хорошим временем, чтобы убедиться, что объекты соответствуют той роли, которой они подчиняются.

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

По поводу отсутствия инкапсуляции : Учитывая, что coffeescript реализует очень хорошую оболочку класса для схемы прототипа, я предполагаю, что вы имеете в виду отсутствие частногопеременные?На самом деле есть несколько способов скрыть детали от клиентов, если вы чувствуете необходимость, и я это делаю;обычно, чтобы не позволить себе выстрелить ногой в будущем.Ключ обычно состоит в том, чтобы спрятать вещи в замыканиях.

Кроме того, взгляните на Object.__defineGetter__ / Object.defineProperty? Геттеры и сеттеры могут очень помочь в этих ситуациях.

Об уменьшении времени итерации:

Я использовал встроенный наблюдатель файлов в кофе для компиляции сценариев при изменении.В сочетании со способностью TextMate сохранять все открытые файлы при потере фокуса это означало, что при тестировании требовалось переключиться с textmate на chrome / firefox и перейти на обновление.Довольно быстро.

В проекте node.js я настроил свои представления так, чтобы они просто компилировались и работали на лету, поэтому даже средство просмотра файлов является излишним.Они кешируются в выпуске, но в режиме отладки они всегда перезагружаются с диска, перекомпилируются, и при обнаружении ошибок я просто отображаю их.Поэтому теперь каждые несколько минут я переключаюсь в браузер, нажимаю обновление и вижу, что мой тест запущен, или ошибки компилятора.

1 голос
/ 18 января 2012

Не переходите прямо к Сценарию Кофе.Изучите основные понятия из прототипа и Javascript OO.IMMO Вы можете изучать и то и другое одновременно, но вы получите гораздо больше пользы, если сначала получите Vanilla Javascript.Исходя из моего личного опыта, синтаксический сахар Coffee Script для классов может оказаться ловушкой, если вы не понимаете прототипов наследования (легко застрять в ошибке).

Отладка Coffee Script до сих пор не решена полностьюЧто касается инструментов, единственный способ, которым я знаю, что это может быть сделано, - это писать тесты (боль, когда вы только начинаете) или смотреть на сгенерированный код (по крайней мере, для более неясных ошибок).

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