在NodeJS中区分模块/实例/方法变量的命名规范

4
假设我有如下代码:
var moduleVar = "I belong to this module, you could also call me a static var";

var ClassName = function() {
    var instanceVar = "I belong to this instance";

    function someFunction(functionVar) {
        var anotherFunctionVar = "I belong to this function";
        return 1;
    }
}

module.exports = ClassName;

我已经搜索了有关Node的命名约定,但没有找到任何涉及此问题的内容。 我喜欢在实例变量前加下划线(例如“_instanceVar”),但我仍然困在函数和模块变量之间的区别上。

是否存在一种命名约定来区分它们?


我怀疑是否有通用的。不同的组织可能有自己的惯例。 - Felix Kling
1个回答

6
这是主观的,由团队/开发人员决定。我通常看到“类”用大写字母定义,其他基本上都是小写字母。方法、实例变量、函数参数……总之就是一切!

基本的网络搜索导致我找到了这个:http://www.j-io.org/Javascript-Naming_Conventions/#naming-conventions

下划线通常保留给“私有”实例变量。实际上,在 JavaScript 中很少见到“my*”或“m_”之类的东西——我认为这只是缺乏类和面向对象概念所带来的问题。这使得有时候事情变得困难,因为你不知道你的变量是原始值、对象、数组还是函数!由于事物没有强类型,我认为这比驼峰式命名法更容易出现匈牙利命名法,但你也很少见到它(所以我们不用它:)

最后一件事——一些东西可以通过JSHint进行检查和约束。使用它,或者使用jslint,这样你就不会忘记你的约定,并编写符合一般规范的代码。它肯定会强制你如何编写代码(我仍在从双引号切换到单引号:)

谢谢。我已经看过了JSHint,它在强制执行一些代码风格方面非常出色,但我不认为它可以帮助我强制执行这种条件命名约定 - 我认为它只能强制执行所有变量的单个约定,而不考虑范围。 - AvnerSo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接