冲突类的JavaScript命名约定 TL;博士

冲突类的JavaScript命名约定 TL;博士,javascript,naming-conventions,naming,Javascript,Naming Conventions,Naming,我们如何命名具有扩展JavaScript默认类功能的特性的类(例如,Array) 解释 我是一个小型库的作者,该库为数据结构、算法和处理提供类。这个库有用于数组,对象,数学,颜色和其他很酷的东西的助手模块 我该怎么称呼他们?现在我正在使用以下约定: math ArrayH ObjectH 其中H表示助手类。现在看起来有点难看 名字间距? 是的,我可以像AlgoFlux.array.unique()那样封装所有这些。但是我想说得简短一点,如果JS支持使用语句,比如在C#中使用,那将是一个好主

我们如何命名具有扩展JavaScript默认类功能的特性的类(例如,
Array

解释 我是一个小型库的作者,该库为数据结构、算法和处理提供类。这个库有用于
数组
对象
数学
颜色
和其他很酷的东西的助手模块

我该怎么称呼他们?现在我正在使用以下约定:

  • math
  • ArrayH
  • ObjectH
其中
H
表示助手类。现在看起来有点难看

名字间距? 是的,我可以像
AlgoFlux.array.unique()
那样封装所有这些。但是我想说得简短一点,如果JS支持使用语句,比如在C#中使用,那将是一个好主意

原型设计? 扩展内置类是个坏主意。为此制作单独的模块是一个很好的设计决策


任何关于这个问题的帮助都将不胜感激。谢谢。

这个问题可能有点基于观点,但您有一些选择:

目前:名称空间和/或AMD。最终:

名称空间:

是的,我可以像
AlgoFlux.array.unique()
那样封装所有这些。但我想保持简短

嗯,您不需要复数形式(例如,
AlgoFlux.Array.unique
)。让您的用户担心短消息。例如,如果我愿意,那么在我的代码中,在包含您的库之后,我可以这样做:

var A = AlgoFlux;
然后我使用
A.Array.unique()
,它只比
ArrayH.unique()长一个字符

…如果JS支持使用语句(如C#中的语句),这将是一个好主意

上面的
var
语句很接近;ES6模块一路实现

AMD

如果您支持AMD,那么与上面的名称空间一样,您的用户可以根据自己的代码做出以下决定:

var A = require("AlgoFlux");
……甚至:

var ArrayH = require("AlgoFlux.Array");
…如果他们愿意的话。:-)

ES6模块:

当您可以开始在野外使用它们时(因为它们是全新的,还没有广泛的支持),它将是:

import A from 'AlgoFlux';


我会用下划线,这样你就可以

 your_namespace.method(someArray)

AlgoFlux
对于名称空间来说有点太长(在javascript中,lowerCamelCase更为常见),因此我会选择类似

afx.array.getRandomValues(...)

是这样一个多级名称空间的完美示例。

您的问题与主题无关。对于特定的编程问题也是如此。对于
命名约定
,也有2729个问题。我想这个问题也可以。
 your_namespace(someArray).method1().method2() etc
afx.array.getRandomValues(...)