JAVA编程规范

1,编程规范的范围

源代码是软件产品的产出物,每个软件公司的研发团队,都有严格的编程规范要求。在新员工入职时,都会发一个小册子,里面规定了公司对编程规范的要求。一般包括抒写规范、逻辑规则等等。抒写规范一般包括命名,空格,缩进,换行,体积,注释等等。逻辑规则涵盖了语法结构和语义方面的问题.这些逻辑规则并不影响最终软件的使用和性能问题, 而是被编译器、编辑器所忽视的问题。但是做为高质量代码的追求者来说,这些逻辑规则是非常重要的,其严重的影响了代码的质量问题.这些规则的种类繁多,是在实际的编程过程中,不断总结和积累的。
例如,条件语句的嵌套问题,毫无限制的嵌套下去对编译器而言毫无问题,但是作为代码的开发和维护人员就是梦魇了,所以有经验的开发人员知道嵌套必须少于三层;条件语句的逻辑表达式,如果是常量的话就毫无意义了,我们不需要这些冗余的代码;TRY-CATCH语句在CATCH模块不能为空,必须对EXCEPTION进行适当的处理;再如一个字符串表达式x.equal(y),如果x,y有一个变量是字符串常量的话建议写在左边等等。

2,管理的目标

公司明确了编程规范的要求和标准并不代表就达到了相应管理的目标。我们不仅要明确编程的规范,而且要跟踪执行的过程,并且评估执行的结果。要达到这样的管理目标,需要采用专门的管理工具。自动化的执行相关的管理规范,对部分不能自动化执行的需要能够监测并报告相应的缺陷。

3,基于jrscript技术的解决方案

Jrscript 提供了一种脚本语言,专门解决代码的质量问题, 如抒写规则、逻辑规则、静态分析等等。工具本省提供了基本的管理功能所需的脚本,用户可以根据自己的需要,自定义扩展脚本的功能。脚本的运行环境需要目标源代码的编译环境。jrscript工具可以对整个项目或模块进行自动的优化、标注代码。如图,monitor即是一个jrscript运行环境,根据配置从代码仓库check out项目或者模块,通过加载各种脚本规则功能,对目标代码进行优化、标注以及根据检测项进行检测,并生成检测报告。处理完成以后及时check in 优化过后的代码。

jrscript工作原理

4,jrscript提供的脚本功能

jrscript提供了一个参考sun标准的java代码编程规范的集合。

关键字
package import private protected public static void class interface enum extends implements new abstract super this boolean byte char short int long float double final if else switch case break continue return default while do for try catch assert finally throw throws instanceof synchronized transient volatile native strictfp

保留字
true false null goto const cast future generic inner operator outer rest var byValue

空格与缩进

包路劲声明,关键字后空格;
导入声明,关键字后空格;
return语句的关键字后空格;
括号表达式无空格;
控制语句无空格;
断言表达式无空格;
抛出异常语句,关键字后空格;
同步语句,关键字及分割符左右空格; 语句内容缩进;
常量表达式无空格
类型表达式,关键字左右空格;
类定义,关键字及分割符左右空格;
语句内容缩进;
接口定义,关键字及分割符左右空格; 语句内容缩进;
if语句,关键字及分割符左右空格; 语句内容缩进;
while循环语句,关键字及分割符左右空格; 语句内容缩进;
for循环语句,关键字及分割符左右空格; 语句内容缩进;
一元表达式无空格;
二元表达式分隔符左右空格;
三元表达式分隔符左右空格;
表达式语句无空格;
do循环语句,关键字前后空格;
语句内容缩进;
行注釋//后空格;
文本注釋,左右空格;
文档注释标签:
块语句,关键字左右空格;
注解、关键字左右空格,‘{’前空格;
语句内容缩进;
注解声明无空格
数组表达式,分割符左右空格;
数组访问表达式,分隔符左右空格;
case语句,关键字、分隔符左右空格;
类型无空格;
属性声明,类型左右空格;
枚举属性声明,分隔符左右空格;
枚举类型,关键字、分割符左右空格;
语句类容缩进;
泛型声明,关键字左右空格;
泛型无空格;
文件注釋
左右空格
文件注释标签:
LAMBDA表达式,->、’{‘ 左右空格;
表达式内容缩进;
标号语句,分隔符左右空格;
方法调用,分隔符左右空格;
方法声明,关键字、类型左右空格;
方法声明,类型及关键字左右空格;
方法定义,类型、关键字及分隔符左右空格;方法内容缩进;
匿名对象初始化,关键字及’{'分隔符左右空格;语句内容缩进;
对象数组初始化,关键字及分割符左右空格;
匿名对象数组初始换, 关键字、类型及分割符左右空格;
类型强制转换语句,括号左右空格;
对象初始化语句,关键字左右空格;
属性访问表达式无空格;
属性定义语句,类型及分隔符左右空格;
关键字及分隔符左右空格;语句包含内容缩进;
类型、关键字及分隔符左右空格;语句包含内容缩进;

换行

注解声明,逗号后换行;
默认方法,关键字换行;
数组表达式,逗号后换行;
断言语句,表达式换行;
括号表达式, 表达式换行;
接口定义, 关键字换行;
do循环语句,表达式换行;
枚举属性,逗号后换行;
二元表达式,运算符换行;
三元表达式,运算符换行;
括号表达式,表达式换行;
For循环语句,分号后空格;
泛型,逗号后换行;
If语句, 表达式换行;
类定义, 关键字换行;
方法调用, 逗号后换行;
方法声明, 逗号后换行;
方法定义, 逗号后换行;
匿名类, 逗号后换行;
对象数组初始化, 逗号后换行;
对象数组初始化, 逗号后换行;
方法调用,表达式换行;
对象初始化语句,表达式换行;
返回语句,表达式换行;
选择语句, 表达式换行;
同步语句, 表达式换行;
抛出语句, 表达式换行;
While语句, 表达式换行;
捕获语句, 表达式换行;
属性声明, 逗号后换行;
对象表达式, 表达式换行;
表达式语句, 表达式换行;
强制类型转换,表达式换行;
属性定义, 表达式换行;

命名及逻辑规则

Do语句自动添加{};
For语句自动添加 {};
If语句自动添加{};
While语句自动添加{};
类定义添加注释;
文件头添加注释;
方法定义添加注释;
删除空语句;
类名标识符首字母必须大写;
枚举属性标识符单词首字母大写;
枚举名标识符首字母必须大写;
泛型属性标识符首字母必须大写;
接口名标识符首字母必须大写;
标号名标识符单词首字母大写;
方法名标识符首字母必须小写;
变量名标识符首字母必须小写;
包名标识符所有字母必须小写;
变量名标识符需要有意义的单词;
final变量名标识符所有字母均大写;
方法名标识符首字母必须小写;
变量名标识符首字母必须小写;
代码文件内容超过100行;
方法内容超过80行;

5,相关产品优缺点比较

市场上有一些工具辅助执行,
例如:jindent、checkstyle、pmd、findbugs,Junit、jprofile,jrscript等等。

jinent、checkstyle主要解决代码的书写格式的问题;
pmd主要解决代码的一些逻辑规则的问题;
findbugs主要解决了代码的静态分析问题可以检测代码中存在的潜在bug;
junit主要解決單元測試的問題;
jprofile主要解決一些性能問題;

jrscript 主要解決了标准化代码的编写风格、逻辑规则、静态分析等等的问题,通过这一個工具即可统一解决 jindent、checkstyle、pmd、findbugs等等的所有功能,而且可以自动优化、自动批注源码的功能.

这些工具各自存在一些缺点,如下对各自进行一个对比:

书写格式逻辑规则静态分析单元测试性能测试
jinent支持不支持不支持不支持不支持
checkstyle支持不支持不支持不支持不支持
pmd不支持支持不支持不支持不支持
findbugs不支持支持支持不支持不支持
Junit不支持不支持不支持支持不支持
jprofile不支持不支持不支持不支持支持
jrscript支持支持支持不支持不支持

6、附件

1, JR脚本语言使用说明书.pdf
2, JR代码质量规范之空格与缩进.pdf
3, JR代码质量规范之换行规则表.pdf
4, JR代码质量规范之逻辑规则表.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值