我知道编写代码有很多标准。和一些政策工具(如FxCop)来检查你的写作陈述。
什么是最好的匈牙利表示法或任何其他编写代码的片段?
像:
lbl开始命名标签
txt开始命名TextBox
等。
更新:基于答案,使用Hungerian表示法是否是一个好主意?
另外,我将其标记为社区维基
答案 0 :(得分:9)
“Hungarian notation”一直是编程界许多热心辩论的主题。乔尔·斯波尔斯基(Joel Spolsky)有一个well-noted article捍卫智能使用的匈牙利符号,我觉得值得一读。
至于匈牙利表示法中使用的前缀列表:我不认为这些前缀的一般列表存在,因为它们将不同于编程语言和编程语言。维基百科的文章列出了一些;否则,我认为您必须参考您所在地区使用匈牙利表示法的平台/框架的编码标准手册。
答案 1 :(得分:4)
关于你的lbl和txt示例:这不是古典Charles Petzold意义上的匈牙利符号,只是前缀/命名约定。
Microsoft有一个list of these。摘录:
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
答案 2 :(得分:2)
Framework Design Guidelines下的Microsoft General Naming Conventions说:
单词选择
选择易于识别的标识符名称。例如,a 名为HorizontalAlignment的属性是 英文比英文更具可读性 AlignmentHorizontal。
赞成可读性而不是简洁。该 属性名称CanScrollHorizontally是 比ScrollableX更好(一个不起眼的 参考X轴)。
请勿使用下划线,连字符或 任何其他非字母数字字符。
请勿使用匈牙利表示法。
匈牙利表示法是一种做法 包括标识符中的前缀 编码一些有关的元数据 参数,例如数据类型 标识符。
答案 3 :(得分:0)
在 Windows API 的较低抽象层,Charles Petzold 的(了不起的)书 “Programming Windows” 对匈牙利符号前缀有这样的说法:
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