【问题标题】:Server side Javascript best practices?服务器端 Javascript 最佳实践?
【发布时间】:2010-12-21 15:13:24
【问题描述】:

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

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

【问题讨论】:

  • 将其移植到 Node.js 是否为时已晚?
  • 使用 node.js 有什么好处?
  • 我今天刚开始使用nodejs,并编写了我的第一个迷你文档服务器(需要用于我工作的各种持续集成任务)。之前看过 rhino,我更喜欢 nodejs 的简单性,恕我直言。
  • 查看 Javascript:好的部分。
  • 最佳实践是写书人的意见。这个问题主要是基于意见的,应该结束。

标签: javascript coding-style rhino serverside-javascript


【解决方案1】:

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

【讨论】:

    【解决方案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 使用 function 范围而不是块范围。这可能会导致一些非常棘手的问题。在 A List Apart 上有一篇关于此问题的精彩文章,名为 Binding in JavaScript。


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

    【讨论】:

      【解决方案3】:

      以下是前线的一些提示:

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

      【讨论】:

      • +1 给你。我本来打算写下自己的答案,但简单的事实是,您触及了大多数共同点,尽管它们很简单,但没有人真正做到。我可以重申一下第 1 条和第 2 条,我不知道 JS 开发人员会想到什么,就像他们认为因为他们编写了 JavaScript 就脱离了良好的编程实践。
      • 我可以重申 JSLINT 的建议,并补充说这应该取代您拥有的任何持续集成设置中的编译步骤。如果代码未通过 JSLINT,则不应将其签入存储库。有些人不同意 JSLINT 所做的一些检查,但我必须强调,以这种方式集成 JSLINT 将防止将破坏其他工作代码的语法错误合并到产品中。
      • 并且一定要使用 JSLint 而不是 Javascript lint。它们是两个独立的产品。并不是说 javascript lint 不好,而是它不会捕获隐式全局变量,而 JSLINT 可以。你的代码不应该有任何你不知道的隐含全局变量。 JSLint 还提供了一种方法,让您可以在特殊格式的注释中声明您知道的所有全局变量。无论如何,无论是否使用 jslint,在每个 .js 文件的开头添加此注释都非常有用。
      • 另外几件事要添加:尝试使用可以运行 javascript 代码作为扩展的 IDE,并让自己熟悉此功能。 Eclipse 就是这样一种 IDE。通过这种方式,您可以将 JSLINT 等工具直接合并到您的代码编辑环境中。完成这项工作后,您还可以使用jsbeautifier.orgboyopeg.googlepages.com/jsmeter.html,您最喜欢的压缩器/编译器,您将能够用 javascript 编写自己的代码修改工具来执行您拥有的任何其他编码标准。
      • 不要忽视文件命名、范围和文件夹组织标准。
      猜你喜欢
      • 2018-03-06
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 2012-09-13
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多