Java语言编码惯例

这里说说Java语言编码惯例。

 

任何一种语言都有其规范惯例。比如以前汉语都是从左到右,从上到下的书写,现在是从左到右,从上到下的书写,每段前空开两个字符表示一段文字的开始等等。

 

说道编程语言,本质上也是语言的一种,有词组(关键字)、语法、语义,为了让计算机能够读懂高级编程语言的源代码,必须进行编译。但是一定要明白的是,源代码首先是供人阅读的。所以,排版规范,结构清晰的源代码,阅读起来可以说是一种享受。

 

特别是现在的软件系统的规模,都是一些大型软件,是多人合作开发的,还有后续的运行维护。

 

我们想象一下,在一个大型的项目中,如果每个程序员在给包、类、变量、方法取名的时候,如果根本没有一点约定,只是随心所欲,可能会带来那些问题?

1.程序可读性极差;
2.在相互有交互的程序中,给其他程序员理解程序带来很大的麻烦;
3.对于测试员来说,在测试中如果需要检查源程序,将会感到无从下手;
4.在后续的维护中,可能因为程序根本没法看懂,而不得不重新编写一个新的程序。

 

第四点可以说是最糟糕的结局了。本已完成用户要求功能,并通过测试,可以正常运行的代码,因为其混乱的编码规范,直接被抛弃另起炉灶,凭空增加了维护的工作量。这种情况我还真遇到过,用户提出需求变更修改,我拿到很早以前的代码,发现那段逻辑代码,从命名到逻辑都无从下手,根本不符合整体项目框架的开发规范要求,只能重新写一个新函数(这还得在准确理解需求和整体框架平台开发技术基础上)。不过没办法,时间紧张,与其去读那段天书一般的代码,还不如直接重新来写来得快。

 

当然重新写的时候,就得小心点,照顾到以后维护的人的感受了,从命名规范,到排版逻辑处理,都严格遵守项目框架的技术要求。

 

这样说起来,程序设计的标准化非常重要,原因在于这能提高开发团队各成员的代码的一致性,使代码更易理解,这意味着更易于开发和维护,从而降低了软件开发的总成本。

 

为实现此目的,和其它语言类似,Java语言也存在非强制性的编码惯例。虽说这个惯例是非强制的,但是基本上绝大多数的Java程序员都接受了这个惯例。听过这样的故事(真实性尚未考证),在谷歌内部,基本上应用到的编程语言都有一套自己的编码规范,但是Java没有,而是沿用了这套惯例。说明这套惯例还是有其优势和合理性的。

 

1.命名规范

 

命名惯例也称命名约定,在声明包名、类名、接口名、方法名、变量名、常量名时除必须符合标识符命名规则外,还应尽量体现各自描述的事物,或属性,功能等,例如可定义类Student描述学生信息。一般性命名约定:


 尽量使用完整的英文单词或确有通用性的英文缩写;
 尽量采用所涉及领域的通用或专业术语;
 词组中采用大小写混合使之更易于识别;
 避免使用过长的标识符(一般小于15个字母);
 避免使用类似的标识符,或者仅仅是大小写不同。


具体命名惯例如下:


 包名应为名词或名词性短语,全部小写,例如: package cn.edu.tsinghua;
 类名应为名词或名词性短语,各单词首字母大写,例如:class TestStudent;
 接口命名规则同类名,例如:interface Person;
 方法名应为动词或动宾短语,首字母小写,其余各单词首字母大写,例如:getName(){…}、deleteUser(){}等;
 用于设置属性值的方法应命名为setXxx(),其中Xxx为相应属性名,且属性名的首字母大写,例如:setAge(int _age){this.age = _age;};
 用于获取属性值的方法应命名为getXxx(),其中Xxx为相应属性名,且属性名的首字母大写,例如:getAge(){return this.age;};
 变量名应为名词或名词性短语,首字母小写,其余各单词首字母大写: currentCustomer
 常量名全部大写,为名词或名词性短语,多个单词间用‘_’分隔:HEAD_COUNT,MAXIMUM_SIZE

 

2.缩进

 

缩进应该是每行2个或4个空格。 不要在源文件中保存Tab字符, 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度。

 

3.页宽

 

页宽应该设置为80字符。 源代码一般不会超过这个宽度,并导致无法完整显示, 但这一设置也可以灵活调整,特别是现在的显示器愈来愈大了。在任何情况下,超长的语句应该在一个逗号或者一个操作符后折行。 一条语句折行后, 应该比原来的语句再缩进2个或4个字符。

 

4.{}对

 

一般来说,{}应该单独用做一行。{的位置,可以跟在之前的语句之后,也可另起一行。不过大部分的Java语言都是跟在之前的语句之后,c语言的习惯是另起一行。

 

5.括号

 

左括号和后一个字符之间不应该出现空格,同样,右括号和前一个字符之间也不应该出现空格。

 

不要在语句中使用无意义的括号。 括号只应该为达到某种目的而出现在源代码中。

 

6.其他

 

在程序的关键方法和关键算法上使用注释,在类定义、方法、变量之前使用javadoc定义,以方便生成API文档。
在运算符与运算数间用空格间隔

 

不过这些惯例,除了第一条命名管理之外,其他的排版规格都不必专门来记。现在主流的IDE都根据Java这套编码惯例提供代码格式化模版,可以很方便的格式化你的源代码。只需执行一个命令,你的代码排版就变漂亮了。

 

至于第一条,在以后的编码实践中,前期只要严格来照着做,以后养成习惯就好了。并且IDE都会对不符合规范的命名提出警告提示的。


 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值