`
lovnet
  • 浏览: 6707071 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

运筹帷幄之中决胜千里之外 菜鸟初识代码编程规范二 命名规范

 
阅读更多

良好的命名规范可以为团队合作开发推波助澜,无论在项目开发,还是产品维护上都起到了至关重要的作用。应该说命名规范是一种约定,也是程序员之间良好沟通的桥梁。另外古人相信只要知道一个人真正的名字就会获得凌驾于那个人之上的不可思议的力量。只要给事物想到正确的名字,它就可以带来比代码更强的力量。如果所有的命名都与其自然相适合,则关系清晰,含义可以推导得出,一般人的推想也能在意料之中。
 
命名规范

在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




•这些前缀使得代码语句更加容易理解。
•只要阅读一下语句,就能知道发生的一切,

总体规则

Ø名字应该能够标识事物的特性。

Ø 名字一律使用英文单词,而不能为拼音。

Ø 名字尽量不使用缩写,除非它是众所周知的。

Ø名字可以有两个或三个单词组成,但不应多于三个,控制在330个字母以内。

Ø在名字中,多个单词用大写第一个字母(其它字母小写)来分隔。例如: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/maxbegin/end open/close

Ø不要使用原义数字或原义字符串,如 For (i = 1;i <= 7;i++)。而是使用命名常数,如 For (i = 1;i <= NUM_DAYS_IN_WEEK;i++)以便于维护和理解。

常量名也应当有一定的意义,格式为NOUNNOUN_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)命名

和类命名规范相同。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics