运筹帷幄之中决胜千里之外 初学者初识代码编程规范二 命名规范
良好的命名规范可以为团队合作开发推波助澜,无论在项目开发,还是产品维护上都起到了至关重要的作用。应该说命名规范是一种约定,也是程序员之间良好沟通的桥梁。另外古人相信只要知道一个人真正的名字就会获得凌驾于那个人之上的不可思议的力量。只要给事物想到正确的名字,它就可以带来比代码更强的力量。如果所有的命名都与其自然相适合,则关系清晰,含义可以推导得出,一般人的推想也能在意料之中。
命名规范
在vb的学习当中介绍:
•程序代码常常要引用控件和变量,在复杂的过程中,很难完全理解代码中出现的所有元素。
TotalDue=LineItemTotal-Discount+TotalTax
•软件开发人员从数据类型后缀改为使用单字符前缀
•例如
–Dim Iwidth As Long
–Dim iHeight As Integer)
•更好的命名约定最终代替了单字符前缀。这种命名约定称为匈牙利标记法,
–它使用3字符前缀来表示数据类型和控件类型,
•如何直观地与赋予变量的数据类型相匹配的:
D i m strNameAs String
•3个字符可以实现充分的多变性,并使前缀合乎逻辑和直观。再一次观察一下前面给出的代码语句:
TotalDue = LineItemTotal – Discount + TotalTax
相等价的语句
txtTotalDue.Text =
curLineItemTotal –txtDiscount.Text + curTotalTax
curTotalDue =
curLineItemTotal – curDiscount + curTotalTax
txtTotalDue.Text =
txtLineItemTotal.Text – txtDiscount.Text + _txtTotalTax.Text
•这些前缀使得代码语句更加容易理解。
•只要阅读一下语句,就能知道发生的一切,
总体规则
–Dim Iwidth As Long
–Dim iHeight As Integer)
D i m strNameAs String
•3个字符可以实现充分的多变性,并使前缀合乎逻辑和直观。再一次观察一下前面给出的代码语句:
TotalDue = LineItemTotal – Discount + TotalTax
相等价的语句
txtTotalDue.Text =
curLineItemTotal –txtDiscount.Text + curTotalTax
curTotalDue =
curLineItemTotal – curDiscount + curTotalTax
txtTotalDue.Text =
txtLineItemTotal.Text – txtDiscount.Text + _txtTotalTax.Text
•这些前缀使得代码语句更加容易理解。
Ø 名字应该能够标识事物的特性。
Ø 名字一律使用英文单词,而不能为拼音。
Ø 名字尽量不使用缩写,除非它是众所周知的。
Ø 名字可以有两个或三个单词组成,但不应多于三个,控制在3至30个字母以内。
Ø 在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如:IsSuperUser。
Ø 名字尽量使用前缀而不是后缀。
Ø 名字中的单词尽量使用名词,如有动词,也尽量放在后面。例如:FunctionUserDelete(而不是FunctionDeleteUser)。
在具体任务开发中,如果有特定的命名约定,则在相应的软件开发计划中予以明确定义及上报质量管理部审计组。
命名规范
Variable)命名
Pascal: 大小写形式——所有单词第一个字母大写,其他字母小写。
camel: 大小写形式——除了第一个单词,所有单词第一个字母大写,其他字母小写。
在.NET编码规范中所有变量都用camel命名形式,而不是用数据类型和m_来作前缀。
用有意义的,描述性的词语来命名变量
- 别用缩写。用name, address, salary等代替nam, addr, sal
- 别使用单个字母的变量象i, n, x等.使用index,
temp等
用于循环迭代的变量例外:
for ( int i = 0; i < count; i++ )
{
...
}
- 变量名中不使用下划线 (_)。
- 命名空间需按照标准的模式命名
在程序中,明确变量的作用范围是很有必要的,所以规定:
- 全局变量命名:加前缀‘g’表示(global)。
例如:string gstrName; int giID;
- 局部变量命名:变量类型+变量名。
例如:string strName; int iID;
- 静态变量命名:加前缀‘s’表示(static)
例如:static string sstrName; static int siID;
- 只读变量命名:加前缀‘ro’表示(readonly)
例如:readonly string rostrName; readonly int roiID;
补充说明:
针对异常捕获过程中的Exception变量命名,在没有冲突的情况下,统一命名为exp;
如果有冲突的情况下,可以用“exp”+标志名称,如:expSql。
Try
{
//your code
try
{
//code
}
catch(Exceptionexp)
{
//your code
}
}
catch(ExceptionexpSql)
{
//your code
}
补充:如果捕获异常不需要作任何处理,则不需要定义Exception实例。
例:
try
{
//your code
}
catch( Exception exp)
{
}
Ø 鉴于大多数名称都是通过连接若干单词构造的,请使用大小写混合的格式以简化它们的阅读。每个单词的第一个字母都是大写.
Ø 即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。仅对于短循环索引使用单字母变量名,如 i或 j。
Ø 在变量名中使用互补对,如 min/max、begin/end和 open/close。
Ø 不要使用原义数字或原义字符串,如 For (i = 1;i <= 7;i++)。而是使用命名常数,如 For (i = 1;i <= NUM_DAYS_IN_WEEK;i++)以便于维护和理解。
常量名也应当有一定的意义,格式为NOUN或NOUN_VERB。常量名均为大写,字之间用下划线分隔。
例:
Private constbool WEB_ENABLEPAGECACHE_DEFAULT =true;
privateconstint WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
private constbool WEB_ENABLESSL_DEFAULT =false;
注:
变量名和常量名最多可以包含 255个字符,但是,超过 25到 30个字符的名称比较笨拙。此外,要想取一个有实际意义的名称,清楚地表达变量或常量的用途,25或 30个字符应当足够了。
Class)命名
a)名字应该能够标识事物的特性。
b)名字尽量不使用缩写,除非它是众所周知的。
c)名字可以有两个或三个单词组成,但通常不应多于三个。
d) 使用Pascal,所有单词第一个字母大写。例如 IsSuperUser,包含ID的,ID全部大写,如CustomerID。
e) 使用名词或名词短语命名类。
f) 少用缩写。
g)不要使用下划线字符 (_)。
例: public classFileStream
public classButton
public classString
Interface)命名
和类命名规范相同,唯一区别是 接口在名字前加上“I”前缀
例:
interface IDBCommand;
interface IButton;
Method)命名
a)和类命名规范相同。
b)方法名需能看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。
(NameSpace)命名
和类命名规范相同。
- 11楼hxj135812前天 10:35
- 加油哈!
- Re: lishehe前天 11:30
- 回复hxj135812n加油
- 10楼dandanzmc3天前 08:30
- 命名的确挺重要的
- Re: lishehe前天 12:59
- 回复dandanzmcn恩恩,未来运用很多
- 9楼liujiahan6296293天前 20:41
- [e01]
- Re: lishehe3天前 22:46
- 回复liujiahan629629n加油
- 8楼lfmilaoshi3天前 19:21
- 这么多的内容,放在博客上,下一步是什么?米老师
- Re: lishehe3天前 19:22
- 回复lfmilaoshi先知道了命名规范,接下来就是不断的运用到程序中,严格要求自己!
- 7楼cjr152336611433天前 19:21
- 加油加油,鼓掌
- Re: lishehe3天前 19:21
- 回复cjr15233661143n加油
- 6楼wangxuhebeibd3天前 19:21
- 顶起 。 加油
- Re: lishehe3天前 19:21
- 回复wangxuhebeibdn[e04]
- 5楼kanglix1an3天前 19:20
- 加油~~~
- Re: lishehe3天前 19:20
- 回复kanglix1ann加油
- 4楼linlin802306193天前 17:57
- 把这些用到我们的程序中去~加油~
- Re: lishehe3天前 19:18
- 回复linlin80230619n好的,呵呵,加油
- 3楼song_mou_xia4天前 10:21
- 加油!!
- Re: lishehe3天前 17:51
- 回复song_mou_xian加油
- 2楼han_yankun20094天前 08:18
- 实际运用
- Re: lishehe4天前 08:33
- 回复han_yankun2009n恩恩
- 1楼liutengteng1304天前 07:56
- [e01]运用。
- Re: lishehe4天前 08:17
- 回复liutengteng130n用