Сторона сервера лучшие практики JavaScript?

Как многие люди отметили, средняя производительность случая для quicksort быстрее, чем сортировка с объединением. , Но это только верно, если Вы предполагаете, что постоянное время получает доступ к какой-либо части памяти по требованию.

В RAM это предположение обычно не слишком плохо (это не всегда верно из-за кэшей, но это не слишком плохо). Однако, если Ваша структура данных является достаточно большой для проживания на диске, то quicksort добирается , уничтожил тем, что средний диск делает что-то как 200 случайных, ищет в секунду. Но тот же самый диск не испытывает никаких затруднений при чтении или записи мегабайт в секунду данных последовательно. Который является точно, что делает сортировка с объединением.

Поэтому, если данные должны быть отсортированы на диске, Вы действительно, действительно хотят использовать некоторое изменение на сортировке с объединением. (Обычно Вы подсписки quicksort, затем начните объединять их вместе выше некоторого порога размера.)

, Кроме того, если необходимо сделать что-нибудь с наборами данных того размера, думайте трудно о том, как избежать, ищет на диск. Например, это - то, почему это - стандартный совет, что Вы отбрасываете индексы прежде, чем сделать большие загрузки данных в базах данных, и затем восстанавливаете индекс позже. Поддержание индекса во время загрузки постоянно означает ищущий на диск. В отличие от этого, при отбрасывании индексов тогда база данных может восстановить индекс первой сортировкой информации, с которой будут иметь дело с (использование сортировки с объединением, конечно!) и затем загрузка его в B-ДЕРЕВО datastructure для индекса. (B-ДЕРЕВЬЯ естественно поддерживаются в порядке, таким образом, можно загрузиться один от отсортированного набора данных с немногими, ищет на диск.)

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

7
задан Jon Seigel 4 April 2010 в 16:41
поделиться

5 ответов

Вот несколько советов с передовой:

  • Как и в Java, используйте докблоки в стиле Doxygen / JsDoc для функций
  • Модульный тест. Лично похож на JsTestDriver, так как он также может запускаться автоматически с сервера CI.
  • Используйте JSLint. Он придирается к плохому коду
  • . Рассмотрите возможность использования Google Closure Compiler. Он придирается к коду вроде JSLint, но может быть полезен для выявления плохих блоков документации и т. Д.
  • Убедитесь, что все в вашей команде понимают, как работают замыкания. В противном случае это приведет к головной боли
  • Как вы упомянули, пространства имен важны, особенно если вы хотите, чтобы ваш код хорошо работал с другими библиотеками JS ( var myns = myns || {}; )
  • Лично я нахожу полезным использование библиотеки, которая предоставляет помощники ООП, такие как классы и т. Д. Вы можете использовать прототипное наследование, но это с этим часто бывает немного сложнее.
20
ответ дан 6 December 2019 в 06:36
поделиться

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

1
ответ дан 6 December 2019 в 06:36
поделиться

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

3
ответ дан 6 December 2019 в 06:36
поделиться

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

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

Еще одна вещь, которая поражает многих программистов Java / C ++, - это то, что JavaScript использует функцию область видимости НЕ блока. Это может вызвать очень сложные проблемы. В A List Apart есть отличная статья об этой проблеме под названием «Связывание в JavaScript».


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

  • то, как писать объектно-ориентированный код с использованием прототипного наследования. (по сравнению с наследованием на основе классов)
  • как использовать замыкания и лямбды
  • как использовать мощь динамических объектов
  • как писать код с функциональной областью
2
ответ дан 6 December 2019 в 06:36
поделиться

Ниже приведены несколько ссылок, которые могут вам помочь:

Рекомендации по Javascript

Файл pdf с рекомендациями по JavaScript

1
ответ дан 6 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: