我正在js中编写自定义UI构建器。它使用工厂的实现来构建元素。为了确保显而易见哪些函数是库的一部分而哪些函数是普通旧javascript的一部分,我使用了function _FunctionName()
的命名约定。但是,我觉得永远做Factory._FunctionName()
是很乏味的。
我应该删除命名约定(function FunctionName()
)还是坚持使用?
是否存在关于制作这样的库的命名约定常见/最佳实践?
编辑:
var __PanelFactory = function () {
//"private"
var Panels = [];
//exposed
function _GetPanel(id) {
//etc
}
return {
_GetPanel: _GetPanel,
};
};
var Factory = new __PanelFactory();
Factory. //this will show certain plain javascript functions
//like toString, constructor, hasOwnProperty, isPrototypeOf, etc...
//note that even jQuery can have the previous list used with something like
$(selector).
//So to differentiate I made sure my functions start with _
Factory._GetPanel(1);
//Should I just make it easy on myself and allow
Factory.GetPanel(1);
//Or is there value in leaving the naming convention in?
答案 0 :(得分:3)
以下是javascript中一些非常常见的约定。
通常在ALL_CAPS_WITH_UNDERSCORES
中var MAX_COUNT = 100;
var BASE_URL = "http://example.com/api/";
通常在lowerCamelCase中
var currentCount = 0;
var userName = "timrwood";
通常在UpperCamelCase中
function Factory(){}
var factory = new Factory();
通常在lowerCamelCase中
Factory.prototype.getPanel = function(){};
var factory = new Factory();
var panel = factory.getPanel();
通常在_lowerCamelCaseWithAUnderscorePrefix;
Factory.prototype._fetchPanel = function(){};
Factory.prototype.getPanel = function() {
return this._fetchPanel();
}
答案 1 :(得分:1)
SO上已经有一个问题链接到关于Javscript编码约定(包括命名)的好文档:
你问过的关键部分:
这有些可选,因为PanelFactory
不会与普通的Javascript冲突。如果你要让第三方使用公共API,它可能会与其他库冲突,但是:
var MyApp = MyApp || {};
MyApp.__PanelFactory = function () { // ...
_
)。您不需要下划线,因为已经使用JavaScript一段时间的人知道内置于每个对象(toString
等)的默认实例范围函数:
MyApp.PanelFactory = function () {
// ...
function GetPanel(id) {
//etc
}
这只是一个标准惯例。它无法区分内置函数,但正如我在上一个项目中所说,您不需要。
MyApp.PanelFactory = function () {
// ...
function getPanel(id) {
//etc
}
这将帮助您区分命名空间,对象构造函数和对象实例(您希望存在自定义实例范围函数,通常称为“方法”)的区别。
var factory = new MyApp.PanelFactory();
var panel = factory.getPanel();