2009-11-30 4 views
7

У нас есть CMS, построенный на Java, и у нее есть Mozilla Rhino для серверной части JS. На данный момент база кода JS небольшая, но растет. Прежде, чем будет слишком поздно, и код стал ужасным беспорядком, я хочу представить некоторые лучшие практики и стиль кодирования.На стороне сервера Рекомендации Javascript?

Очевидно, что управление пространством имен довольно важно. Но как насчет других лучших практик - особенно для Java-программистов?

+2

это слишком поздно, чтобы портировать его на Node.js? – Nosredna

+0

Каковы преимущества использования node.js? –

+0

Я только начал использовать nodejs сегодня и написал свой первый сервер мини-документов (необходимый для различных задач непрерывной интеграции, где я работаю). Посмотрев на носорог раньше, я очень предпочел простоту, ИМХО, узлов. – jeremyosborne

ответ

20

Вот некоторые советы от линии фронта:

  • Как Java, использование docblocks в Doxygen стиле/JSDoc для функций
  • тесты единицы. Лично, как JsTestDriver, так как он может быть выполнен автоматически с сервера CI.
  • Используйте JSLint. Это будет неправильный код
  • Рассмотрите возможность использования Google Closure Compiler. Он будет игнорировать код, например JSLint, но он может быть полезен для определения плохих блоков документов и т. Д.
  • Убедитесь, что все в вашей команде понимают, как работают замыкания.В противном случае это приведет к головной боли
  • Как вы упоминаете, пространство имена имеют важное значение, особенно если вы хотите, чтобы ваш код работал хорошо с другими библиотеками JS (var myns = myns || {};)
  • Лично я считаю, используя библиотеку, которая обеспечивает объектно-ориентированное программирование хелпер как классы и т.д. полезно. Вы можете использовать прототипное наследование, но часто это бывает немного сложнее.
+1

+1 к вам. Я собирался написать свой собственный ответ, но простая истина заключается в том, что вы попадаете в большинство общих точек, которые, как они есть, никого не делают. Могу я просто повторить пуля № 1 и № 2, я не знаю, что попадает в головы разработчиков JS, похоже, они думают, потому что они пишут JavaScript, они скрываются от хороших методов программирования. – jeremyosborne

+0

Могу ли я повторить предложение JSLINT и добавить, что это должно заменить шаг компиляции в любой вашей постоянной установке интеграции. Если код сбой JSLINT, его не следует проверять в репозитории. Некоторые люди не согласны с некоторыми проверками, которые выполняет JSLINT, но я должен подчеркнуть, что интеграция JSLINT таким образом предотвратит ошибки SYNTAX, которые нарушают другой рабочий код, от включения в продукт. – Breton

+0

И не забудьте использовать JSLint, а не Javascript lint. Это два отдельных продукта. Дело не в том, что javascript lint плох, но он не захватывает неявные глобальные значения, а JSLINT делает. В вашем коде не должно быть каких-либо глаголов, которые вы не знаете. JSLint также предоставляет вам возможность объявить все глобальные переменные, о которых вы знаете, в специально отформатированном комментарии. В любом случае этот комментарий во главе каждого .js-файла невероятно полезен, jslint или нет. – Breton

1

Поскольку у вас есть JS-движок на Java, сделайте привычкой писать модульные тесты для вашего JS-кода. Выберите стиль кодирования и энергично применяйте его. Если возможно, используйте инструменты, чтобы проверить, что код соответствует стилю кодировки.

3

Я бы посмотрел CommonJS (ранее ServerJS). Это очень большая работа, но у них есть стандартизованная система модулей с несколькими реализациями. В спецификации CommonJS уже есть некоторые полезные библиотеки, например Narwhal.

2

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

Первое, что нужно сделать, это убедиться, что все прочитали замечательную статью Mozilla, повторное введение в JavaScript (https://developer.mozilla.org/en/a_re-introduction_to_javascript). Одна из самых больших проблем с JavaScript заключается в том, что существует множество способов выполнения большинства распространенных задач, и эта статья должна содержать людей на одной странице. Еще одна важная справка - работа Дугласа Крокфорда, включая JavaScript: «Хорошие детали».

Еще одна вещь, которая получает много программистов на Java/C++, заключается в том, что JavaScript использует function scope NOT block scope. Это может вызвать некоторые очень сложные проблемы. Есть замечательная статья об этой проблеме в A List Apart, которая называется Binding в JavaScript.


Суммируя основные вопросы, говорили в вышеупомянутых ресурсах, наиболее важные различия, чтобы узнать, является

  • как писать объектно-ориентированный код, используя прототипичное наследование (на основе наследования vs.class)
  • как использовать затворы и лямбды
  • , как использовать силу динамических объектов
  • как написать функцию-Scoped код
Смежные вопросы