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。