5

我们有一个基于 Java 的 CMS,它有用于服务器端 JS 的 Mozilla Rhino。目前 JS 代码库很小但正在增长。在为时已晚和代码变得一团糟之前,我想介绍一些最佳实践和编码风格。

显然,名称空间控制非常重要。但是其他最佳实践如何——尤其是对于 Java 程序员?

4

3 回答 3

20

以下是前线的一些提示:

  • 像 Java 一样,对函数使用 Doxygen/JsDoc 风格的 docblocks
  • 单元测试。个人喜欢 JsTestDriver,因为它也可以从 CI 服务器自动执行。
  • 使用 JSLint。它会挑剔糟糕的代码
  • 考虑使用 Google Closure Compiler。它会挑剔 JSLint 之类的代码,但它有助于发现糟糕的文档块等。
  • 确保团队中的每个人都了解闭包的工作原理。不然会头疼
  • 正如您所提到的,命名空间很重要,特别是如果您希望您的代码与其他 JS 库 ( var myns = myns || {};)
  • 就我个人而言,我发现使用提供 OOP 帮助器(如类等)的库很有帮助。您可以使用原型继承,但这种方式通常有点棘手。
于 2009-12-03T06:56:52.280 回答
2

正如 Douglas Crockford 喜欢说的,JavaScript 是世界上最容易被误解的编程语言。虽然很多人不知道,但有一种正确的 JavaScript 编码方式。我毫不怀疑,如果您让 Java 开发人员在了解如何编写好的 JavaScript 之前就开始编码,您将遇到严重的麻烦。

首先要做的是确保每个人都阅读过 Mozilla 的优秀文章,JavaScript 的重新介绍 ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript )。JavaScript 最大的问题之一是有很多方法可以完成最常见的任务,本文应该让人们达成共识。另一个重要的参考资料是 Douglas Crockford 的作品,包括 JavaScript: The Good Parts。

吸引很多 Java/C++ 程序员的另一件事是 JavaScript 使用函数范围而不是块范围。这可能会导致一些非常棘手的问题。在 A List Apart 上有一篇关于此问题的精彩文章,名为 Binding in JavaScript。


总结上述资源中讨论的主要问题,需要学习的最关键的区别是
  • 如何使用原型继承(与基于类的继承)编写面向对象的代码
  • 如何使用闭包和 lambda
  • 如何利用动态对象的力量
  • 如何编写函数范围的代码
于 2009-12-03T06:36:38.917 回答
1

由于您有一个 Java JS 引擎,因此请养成为您的 JS 代码编写单元测试的习惯。选择一种编码风格并大力应用它。如果可能,使用工具检查代码是否符合编码风格。

于 2009-11-30T12:49:05.120 回答