命名约定 - 当可以使用作用域变量实现封装时,为什么要在 JS 中使用 _ 前缀



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

事实上的个人编码标准倾向于使用很多函数和原语,当我使用方法公开对象时,这些通常是语法糖,是重复使用的通用插件的别名:我倾向于将所有内容都保持非常严格的范围,以便每个函数都有不同的目的,并且只提供所需的数据。因此,在任何给定的范围内,只公开最低限度,默认情况下所有内容都是私有的。

下划线前缀属性约定(在我看来(与这里的另外两个大约定密切相关,一个是匈牙利符号,另一个是使用必须添加所有内容的整体神对象。所以我可以看到,在文化上,_如何很好地适应,因为

  1. 所有内容都必须作为全局对象中的属性(属性等(公开
  2. 因此,任何一段代码都可以看到任何其他代码段,因此使用元编码系统来帮助程序员不要错误地践踏彼此的代码

编码标准被放在一个基座上,但它们被接收了,以至于这里没有人能充分解释它们的用途或原因。我愤世嫉俗的观点是,在最早的情况下,开发人员要么认为不适合实现通用的、解耦的代码,要么不知道如何在 JS 中封装,后来开发了匈牙利符号以允许一些一致性,同时有效地必须用人类的认知努力来补偿本质上危险的代码架构。

谁能给我一个不那么愤世嫉俗的解释,说明暴露但_前缀的属性的价值?

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

最新更新