我应该如何命名我的javascript库函数,使它们与普通的旧javascript不同?

我应该如何命名我的javascript库函数,使它们与普通的旧javascript不同?,javascript,Javascript,我正在用js编写一个自定义UI生成器。它使用工厂的实现来构建元素。为了确保很明显哪些函数是库的一部分,哪些函数是普通老javascript的一部分,我使用了function\u FunctionName()的命名约定。然而,我发现总是在工厂里做。\u FunctionName() 我应该删除命名约定(函数FunctionName())还是坚持它 关于这样创建库,是否有命名约定的通用/最佳实践 编辑: 下面是javascript中一些非常常见的约定 常数 通常在所有的大写字母中加下划线 var M

我正在用js编写一个自定义UI生成器。它使用工厂的实现来构建元素。为了确保很明显哪些函数是库的一部分,哪些函数是普通老javascript的一部分,我使用了
function\u FunctionName()
的命名约定。然而,我发现总是在工厂里做
。\u FunctionName()

我应该删除命名约定(
函数FunctionName()
)还是坚持它

关于这样创建库,是否有命名约定的通用/最佳实践

编辑:


下面是javascript中一些非常常见的约定

常数 通常在所有的大写字母中加下划线

var MAX_COUNT = 100;
var BASE_URL = "http://example.com/api/";
变量 通常在较低的情况下

var currentCount = 0;
var userName = "timrwood";
function Factory(){}
var factory = new Factory();
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
建设者 通常大写

var currentCount = 0;
var userName = "timrwood";
function Factory(){}
var factory = new Factory();
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
方法 通常在较低的情况下

var currentCount = 0;
var userName = "timrwood";
function Factory(){}
var factory = new Factory();
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
私有变量/方法 通常在低等级的情况下,带有一个分数前缀

Factory.prototype._fetchPanel = function(){};
Factory.prototype.getPanel = function() {
    return this._fetchPanel();
}

下面是javascript中一些非常常见的约定

常数 通常在所有的大写字母中加下划线

var MAX_COUNT = 100;
var BASE_URL = "http://example.com/api/";
变量 通常在较低的情况下

var currentCount = 0;
var userName = "timrwood";
function Factory(){}
var factory = new Factory();
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
建设者 通常大写

var currentCount = 0;
var userName = "timrwood";
function Factory(){}
var factory = new Factory();
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
方法 通常在较低的情况下

var currentCount = 0;
var userName = "timrwood";
function Factory(){}
var factory = new Factory();
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
私有变量/方法 通常在低等级的情况下,带有一个分数前缀

Factory.prototype._fetchPanel = function(){};
Factory.prototype.getPanel = function() {
    return this._fetchPanel();
}

已经存在一个问题,因此可以链接到有关Javscript编码约定(包括命名)的良好文档:

您所问的关键点:

  • 使用名称空间(使用初始大写名称)
这在某种程度上是可选的,因为
PanelFactory
不会与普通Javascript冲突。如果您正在制作供第三方使用的公共API,它可能会与其他库发生冲突,不过:

var MyApp = MyApp || {};
MyApp.__PanelFactory = function () { // ...
  • 去掉所有函数名之前的下划线(
您不需要下划线,因为已经使用JavaScript一段时间的人知道每个对象中内置的默认实例范围函数(
toString
etc):

  • 使用初始大写名称命名对象构造函数,但使用初始小写名称命名全局或命名空间范围的函数和实例范围的函数:
这只是一个标准惯例。这无助于区分内置函数,但正如我在上一条中所说的,您不需要这样做

MyApp.PanelFactory = function () {
  // ...
  function getPanel(id) {
    //etc
  }
  • 使用首字母小写名称命名局部变量:
这将帮助您区分名称空间、对象构造函数和对象实例之间的区别(您希望自定义实例范围的函数(通常称为“方法”)存在于此


已经存在一个问题,因此可以链接到有关Javscript编码约定(包括命名)的良好文档:

您所问的关键点:

  • 使用名称空间(使用初始大写名称)
这在某种程度上是可选的,因为
PanelFactory
不会与普通Javascript冲突。如果您正在制作供第三方使用的公共API,它可能会与其他库发生冲突,不过:

var MyApp = MyApp || {};
MyApp.__PanelFactory = function () { // ...
  • 去掉所有函数名之前的下划线(
您不需要下划线,因为已经使用JavaScript一段时间的人知道每个对象中内置的默认实例范围函数(
toString
etc):

  • 使用初始大写名称命名对象构造函数,但使用初始小写名称命名全局或命名空间范围的函数和实例范围的函数:
这只是一个标准惯例。这无助于区分内置函数,但正如我在上一条中所说的,您不需要这样做

MyApp.PanelFactory = function () {
  // ...
  function getPanel(id) {
    //etc
  }
  • 使用首字母小写名称命名局部变量:
这将帮助您区分名称空间、对象构造函数和对象实例之间的区别(您希望自定义实例范围的函数(通常称为“方法”)存在于此


为什么要将工厂函数设置为全局函数,而不是将它们限定到特定的命名空间?(例如,就像jQuery方法如何在
$
$.fn
下运行一样)@KirkWoll-但是,javascript仍然允许将基本的
.toString
构造函数
等应用于这些方法中的任何一种。你怎么知道它们是裸函数?@TravisJ:如果它们的作用域是一个名称空间,我想它们已经是可微的了。我认为在调用它们时必须指定名称空间(?)@MerlynMorgan-Graham-只有在使用
var factory=new factory()
@TravisJ:So初始化工厂后才能访问它们,就像
var factory=new factory()<代码>工厂.DoSomething()?你的问题让你看起来像是在谈论不绑定到对象实例的函数。为什么你要将工厂函数设置为全局函数,而不是将它们限定到特定的命名空间?(例如,就像jQuery方法如何在
$
$.fn
下运行一样)@KirkWoll-但是,javascript仍然允许将基本的
.toString
构造函数
等应用于这些方法中的任何一种。你怎么知道它们是裸函数?@TravisJ:如果它们的作用域是一个名称空间,我想它们已经是可微的了。我认为在调用它们时必须指定名称空间(?)@MerlynMorgan-Graham-只有在使用
var factory=new factory()
@TravisJ:So初始化工厂后才能访问它们,就像
var factory=new factory()<代码>工厂.DoSomething()?你的问题让你看起来像是在谈论不绑定到对象实例的函数。+1是一个很好的概述,但我有一个评论。虽然有时会对私有字段使用
\uuuu
,但实际上在语义上有更好的方法来声明私有字段-a