这个问题是为了寻找好的匈牙利命名法示例,以便我们可以汇集这些示例。
编辑:我同意类型的匈牙利命名并不是必须的,我希望能够找到更具体的示例,例如Joel在他的文章中提到的增加可读性和可维护性的示例(如我的答案所述)。
这个问题是为了寻找好的匈牙利命名法示例,以便我们可以汇集这些示例。
编辑:我同意类型的匈牙利命名并不是必须的,我希望能够找到更具体的示例,例如Joel在他的文章中提到的增加可读性和可维护性的示例(如我的答案所述)。
ix
有点晦涩难懂。试试 arrayIndex。_
UnsafeString 或其他东西。甚至可以将其包装在一个UnsafeString 类中,以至少使其类型安全。现在经典的文章,正如其他匈牙利帖子中提到的那样,来自Joel的网站:
http://www.joelonsoftware.com/articles/Wrong.html
(指针的缩写)。这是我使用的主要前缀。我认为它可以为变量添加很多信息(例如,它是一个指针),因此应该更加重视。
现在使用IDE可以告诉你数据类型是什么(只需要将鼠标悬停在变量名上几秒钟),所以匈牙利命名法已经有些过时了。但是,将指针看作数据是不好的,因此您需要确保即使用户在编程时做出了不应该做出的假设,也能明显地说明它是什么。
somestruct_p->some_member
(而somestruct_p.some_member
会显然是错误的(按照Joel文章的意思))。 - hlovdalt
污染数据。对于来自不受信任来源的所有数据,都要添加前缀,使该变量成为污染数据。在对任何真正的工作进行之前,应清除所有污染数据。
使用匈牙利命名法指示类型是没有意义的,因为编译器已经为您完成了这项工作。
匈牙利命名法有用的地方在于区分逻辑上不同的变量类型,但它们具有相同的原始类型。例如,如果您使用int表示坐标,则可以将x坐标前缀为x,y坐标前缀为y,距离前缀为d。因此,您会看到以下代码:
dxHighlight = xStart - xEnd
yHighlight = yLocation + 3
yEnd = yStart + dyHeight
dyCode = dyField * 2
等等。这很有用,因为您可以一眼发现错误:如果您将dy添加到y中,则始终会得到一个y。如果您从两个x中减去一个x,则始终会得到一个dx。如果您将dy乘以一个标量,则始终会得到一个dy。等等。如果您看到以下行:
yTop = dyText + xButton
您立即知道它是错误的,因为将dy和x相加是没有意义的。编译器无法帮您捕获此错误,因为就它而言,您正在将int添加到int中,这是可以接受的。
rg_opbk[i].close
比open_books_list[index].close
更清晰。有人在自欺欺人。 - Gerhard魔鬼的代言人:匈牙利标记法最好的例子就是不要使用它。:D
在现代IDE中,使用匈牙利标记法并没有任何优势,因为它们知道变量的类型。当重新定义变量类型时,添加匈牙利标记会增加工作量,因为名称也必须更改(而且大多数情况下,处理变量时您已经知道其类型)。
您还可能遇到标记排序问题。如果使用p表示指针,a表示地址,那么您是将变量称为apStreet还是paStreet?如果没有一致性,可读性会降低,当您需要记住编写标记的顺序时,必须使用有价值的脑力空间。
我发现匈牙利标记在动态语言中有时很有用。我特别是想到了服务器端的Actionscript(实质上就是javascript),但它也可以适用于其他地方。由于根本没有类型信息,匈牙利标记有时可以帮助使事情变得更容易理解。