【问题标题】:Where can I find a cheat sheet for hungarian notation?我在哪里可以找到匈牙利符号的备忘单?
【发布时间】:2010-12-23 08:18:59
【问题描述】:

我正在开发一个使用系统匈牙利符号的遗留 COM C++ 项目。因为它是对遗留代码的维护,所以约定是以它编写的原始样式进行编码——我们的新代码不是这样编码的。所以我对改变这个标准或讨论我们过去的罪不感兴趣=)

有没有系统匈牙利符号的在线备忘单?

到目前为止我能找到的最好的是a pre stack-overflow discussion post,但它并没有我过去需要的一切。谁有其他链接?

(制作这个社区维基,希望它成为一个自我填充的列表)

【问题讨论】:

    标签: hungarian-notation


    【解决方案1】:

    这是“匈牙利系统”的一个,根据我的经验,它是更常用(但用处不大):

    但我不知道这一点有多普遍。

    匈牙利符号的另一种形式是“Apps Hungarian”,这显然是 Simonyi 的初衷(变量的使用被编码而不是类型)。有关详细信息,请参阅http://en.wikipedia.org/wiki/Hungarian_notation

    【讨论】:

      【解决方案2】:

      如果这是针对旧版 COM 项目,您可能需要关注 Microsoft's Hungarian Notation specifications,这在 MSDN 上有记录。

      请注意,这是Apps匈牙利语,即"good" kind of Hungarian NotationSystems 匈牙利语是“坏”的类型,名称以编译器类型为前缀,例如iint

      MSDN 文章中的表格

      表 1. 过程名称的一些示例

      名称 说明 InitSy 以 sy 作为参数并对其进行初始化。 OpenFn fn 是参数。该过程将“打开” fn。不返回任何值。 FcFromBnRn 返回对应于给定 bn,rn 对的 fc。 (这些名称无法告诉我们 sy、fn、fc 等类型是什么。)

      以下是标准类型结构的列表。 (X和Y代表任意标签,按照标准标点符号,实际标签是小写的。)

      表 2. 标准类型结构

      pX 指向 X 的指针。 dX 两个 X 类型实例之间的差异。X + dX 属于 X 类型。 cX 类型 X 的实例计数。 mpXY 由 X 索引的 Y 数组。读作“从 X 到 Y 的映射”。 rgX X 数组。读作“范围 X”。数组的索引称为: 数组 rgX 的 iX 索引。 dnX (rare) 以类型 X 为索引的数组。数组的元素称为: eX(稀有)数组 dnX 的元素。 grpX 一组Xs一个接一个的存放在storage中。当 X 元素的大小可变且标准数组索引不适用时使用。必须通过直接索引以外的方式引用组的元素。例如,存储分配区域是一个 grp 块。 bX 类型 X 的相对偏移量。这用于具有可变大小字段的数据结构中的字段位移。偏移量可以字节或字的形式给出,这取决于测量偏移量的基指针。 cbX X 实例的大小(以字节为单位)。 cwX X 实例的大小,以单词为单位。

      以下是标准限定符。 (字母 X 代表任何类型标签。实际类型标签是小写的。)

      表 3. 标准限定符

      XFirst X 值的有序集合(区间)中的第一个元素。 XLast 有序 X 值集中的最后一个元素。 XLast 是闭区间的上限,因此循环继续条件应该是:X

      表 4. 一些常见的原始类型

      f 标志(布尔,逻辑)。如果使用限定符,它应该描述标志的真实状态。例外:常量 fTrue 和 fFalse。 w 具有任意内容的单词。 ch 字符,通常为 ASCII 文本。 b 字节,不一定包含编码字符,更类似于 w。通过紧随其后的限定词的大写字母与 b 构造函数区分开来。 sz 指向零终止字符串的第一个字符的指针。 st 指向字符串的指针。第一个字节是字符 cch 的计数。 h pp(在堆中)。

      【讨论】:

        【解决方案3】:

        因为这是一个遗留项目,所以您的软件部门经理应该拥有原始程序员使用的任何版本的 Hungarian Notation 的样式指南副本。 (我假设最初的程序员早就逃到了更开明的工作场所。)

        你真的应该重新考虑你对匈牙利符号的使用。它最初是针对 C 中缺乏强类型(和编译器类型检查)的补丁。现代编译器强制类型正确性,使匈牙利符号充其量是多余的,否则是错误的。

        【讨论】:

          【解决方案4】:

          似乎没有任何一种详尽的资源可用于查找匈牙利符号前缀,这可能是因为其中很多内容因代码库而异。当然,还有很多非常常用的。

          我能找到的最好的列表是here

          其余的涵盖了常用的约定比如这个entry

          MSDN 在匈牙利表示法上的实体是 here 以及几篇关于该主题的短文(可能相互重叠)herehere

          最好的办法是看看变量是如何使用的,并且(可能)帮助你弄清楚前缀的定义(尽管在实践中,命名很少反映了变量的使用,遗憾的是)。

          您也许可以从这些不同的链接中拼凑出一些相似的符号。

          只是为了完整(!)来自 Microsoft 支持的Hungarian Object Notation for Visual Basic 怎么样。

          【讨论】:

            猜你喜欢
            • 2011-08-27
            • 2011-11-28
            • 1970-01-01
            • 2011-11-27
            • 2013-07-05
            • 1970-01-01
            • 1970-01-01
            • 2010-09-17
            • 2022-01-03
            相关资源
            最近更新 更多