为什么在使用范围变量实现封装时在JS中使用_前缀?

时间:2013-02-11 12:06:42

标签: naming-conventions encapsulation

我刚刚开始了一项严格的内部代码标准的新工作。其中一个,我之前在Javascript中见过很多次,是使用_作为对象属性的前缀,不应该从该对象外部访问。

我的事实上的个人编码标准倾向于使用很多函数和原语,当我用方法公开一个对象时,这些通常是语法糖,通用插件的别名可以重复使用:我倾向于保持一切都非常紧密-scoped使得每个函数具有不同的目的,并且仅给出它所需的数据。因此,在任何给定的范围内,只暴露最低限度,默认情况下一切都是私有的。

下划线 - 前缀属性约定与我在其他两个大约会中密切相关(我认为),一个是匈牙利符号,另一个是使用所有的单片神对象必须加入。因此,从文化角度来看,我可以看到_如何适应

  1. 所有内容必须作为(全局对象中的属性等)属性公开
  2. 看到任何一段代码都可以看到任何其他代码,一个元编码系统用于尝试帮助程序员不会错误地践踏每个代码
  3. 编码标准是在一个基座上进行的,但是它们已被接收,因此这里没有人可以充分解释它们的用途或原因。我的愤世嫉俗的观点是,在最早的实例中,开发人员要么认为不适合实现通用的,解耦的代码,要么不知道如何封装在JS中,后来匈牙利语符号被开发为允许一定的一致性,同时有效地拥有为了补充本质上危险的代码架构的人类认知努力。

    任何人都可以给我一个不那么愤世嫉俗的解释暴露但_ - 前缀属性的价值吗?

1 个答案:

答案 0 :(得分:0)

使用_前缀(有时也是m_)的一个原因是区分一方的实例变量和另一方的局部变量和参数,因此它们不能混淆,特别是如果它们具有相同的名称。 另一个原因是要区分非公共实例变量和公开可见属性,这些属性由实例变量备份,因此应具有相同的名称。在像VB.NET这样的语言中,这种区别不能通过大小写来实现,因此添加了一个前缀。