Coding style 如何找到匈牙利符号前缀列表?

Coding style 如何找到匈牙利符号前缀列表?,coding-style,Coding Style,我知道有很多编写代码的标准。还有一些政策工具(比如)来检查你的书面陈述 最好的匈牙利符号或其他代码片段是什么 比如: 开始命名标签时的lbl txt在命名文本框的开头 等等 根据答案,使用匈牙利符号是不是一个好主意?“一直是编程界激烈争论的主题。乔尔·斯波尔斯基(Joel Spolsky)有一个巧妙使用的匈牙利符号,我觉得值得一读 至于匈牙利记法中使用的前缀列表:我不认为存在这样的前缀的一般列表,因为它们在不同的编程语言中是不同的。维基百科的文章列出了一些;否则,我认为您必须参考您所在地区

我知道有很多编写代码的标准。还有一些政策工具(比如)来检查你的书面陈述

最好的匈牙利符号或其他代码片段是什么

比如:

  • 开始命名标签时的lbl

  • txt在命名文本框的开头

等等


根据答案,使用匈牙利符号是不是一个好主意?

“一直是编程界激烈争论的主题。乔尔·斯波尔斯基(Joel Spolsky)有一个巧妙使用的匈牙利符号,我觉得值得一读


至于匈牙利记法中使用的前缀列表:我不认为存在这样的前缀的一般列表,因为它们在不同的编程语言中是不同的。维基百科的文章列出了一些;否则,我认为您必须参考您所在地区使用匈牙利符号的平台/框架的编码标准手册。

关于您使用lbl和txt的示例:这不是经典意义上的匈牙利符号,只是前缀/命名约定

微软有一个很好的解决方案。摘录:

    Prefix    Object Type                           Example
    -------------------------------------------------------
    ani       Animation button                      aniMailBox
    cbo       Combo box and drop down list box      cboEnglish
    chk       Checkbox                              chkReadOnly
    clp       Picture clip                          clpToolbar
    cmd (3d)  Command button (3D)                   cmdOk (cmd3dOk)
    dat       Data control                          datBiblio
    dir       Directory list box                    dirSource
    dlg       Common dialog control                 dlgFileOpen
    drv       Drive list box                        drvTarget
    fil       File list box                         filSource
    frm       Form                                  frmEntry
    gau       Gauge                                 gauStatus
    gpb       Group push button                     gpbChannel
    gra       Graph                                 graRevenue
    grd       Grid                                  grdPrices
    hsb       Horizontal scroll bar                 hsbVolume
    img       Image                                 imgIcon
    ink       Pen Ink                               inkMap
    key       Keyboard key status                   keyCaps
    lbl       Label                                 lblHelpMessage
    lin       Line                                  linVertical
    lst       List box                              lstPolicyCodes
    mdi       MDI child form                        mdiNote
    mnu       Menu                                  mnuFileOpen
    opt (3d)  Option Button (3d)                    optRed (opt3dRed)
    pic       Picture                               picVGA
    pnl3d     3d Panel                              pnl3d
    shp       Shape controls                        shpCircle
    spn       Spin control                          spnPages
    txt       Text Box                              txtLastName
    tmr       Timer                                 tmrAlarm
    vsb       Vertical scroll bar                   vsbRate
微软公司,在下面说:

选词 请选择易于阅读的标识符名称。例如,一个 名为HorizontalAlignment的属性为 英语可读性比英语强 水平对齐

与简洁性相比,更倾向于可读性。这个 属性名为 比ScrollableX(一个模糊的 参考X轴)

不要使用下划线、连字符或 任何其他非字母数字字符

不要使用匈牙利符号。

匈牙利的记谱法是 在标识符中包含前缀,以便 对有关 参数,例如 标识符


在Windows API的较低抽象级别上,Charles Petzold(非常棒)的书《编程窗口》对匈牙利符号前缀作了如下描述:

Prefix          Data Type
-----------------------------------------------------------------
c               char
by              BYTE (unsigned char)
n               short
i               int
x, y            int (used as x-coordinate or y-coordinate)
cx, cy          int (used as x or y length; c stands for "count")
b or f          BOOL (int); f stands for "flag"
w               WORD (unsigned short)
l               LONG (long)
dw              DWORD (unsigned long)
fn              function
s               string
sz              string terminated by 0 byte
h               handle
p               pointer

火焰战争3。。。。2.1.…@Nasser我将magyar编辑成匈牙利语,因为它是更常见的词。如果您不喜欢它,请随意还原。@Nasser:Microsoft和其他公司已决定不再使用匈牙利符号。@John查看一下MSDN上的Win32文档。他们一直在使用它。@Yacoby:是的,在Win32中。不是在.NET中。在Win32中,它是API的一部分。我不同意Joel的观点。如果您需要(或想要)这样的安全性,请定义一个类型来保存每种类型的变量,并且不允许在它和任何其他变量之间进行隐式转换。使用变量名似乎是一种不好的方法,尤其是编译器仍然允许您在变量名定义的“类型”之间进行隐式转换。@Yacoby取决于语言。我现在主要从事基于PHP的web开发(它不支持变量的类型声明,也不是类型安全的),巧妙地使用符号在那里是天赐良机,例如区分经过消毒/未经消毒的输入、HTML片段、像素/颜色值等。您可以获得直接的视觉反馈,了解您可以在哪些变量或函数之间执行哪些操作。我目前正在玩弄它,不确定是否会长期采用它,但它值得考虑。@Yacoby-Joel指的是能够查看代码并发现错误。匈牙利应用程序与强制执行类型安全没有任何关系,它提供了某种错误的视觉信号。Pekka给出的例子很好地利用了匈牙利语的应用程序。我一直认为在变量声明中使用实际的
类型
标识符是无用的(即系统匈牙利语)。@dboarman我对人们试图重新设计类型安全性没有问题,但它永远不会像内置的那样好。例如,Joel说,它可以让他直观地看到是否正在做不安全的事情。使用两种不同的类型,无论变量名如何,我的编译器都不允许这样做。换句话说,我不能编译错误的应用程序。@Yacoby这不仅仅是简单的类型安全问题。考虑包含像素宽度的变量;包含计数器的变量;和一个变量,该变量包含以百分比表示的相对宽度。这三个都是完全有效的整数,但不能将它们相互组合。一个巧妙应用的匈牙利符号加上前缀,如
px
count
rel
(或其他)会使错误的耦合立即可见,特别是当还应用于函数时(“getWidth()”是否返回相对值或像素值?”)这——而不是愚蠢的类型前缀——才是我真正的好处。@John Saunders:谢谢你的通知。Microsoft链接没有为我断开。我只是再次检查了一下。包括在其他两个浏览器(Opera和Chrome)中打开它。你有404吗?链接:@Peter:我找到了他们的“智能错误”“第页。现在它对我也有用。事实上,我看到了,我认为你应该在你的答案中包括这一点。@John Saunders:据我所知,这两个URL之间的唯一区别是对页面的引用,“#rtDisclaimer”。这会有什么不同吗?这是我唯一一次使用任何类型的前缀-任何继承或派生自
控件
表单
的对象@Peter:我的意思是,任何被破坏的东西现在都被修复了。这已经足够固定了,我找到了免责声明,如果你遵循我发布的链接,你会看到它。这是旧信息。你还没有找到一个谋杀案的受害者——你找到了一块化石。匈牙利语的应用程序似乎应该很好。如果文档作者只是要求Simonyi做出一些澄清,我认为Apps Hungarian会有更好的声誉和更广泛的接受度。当然,微软本可以给Apps Hungarian多一点支持,并澄清两者之间的区别——相反,Simonyi看起来就像是他刚刚重新发明了Edsel。