分析一套源代码的代码规范和风格并讨论如何改进优化代码java
个人工程实践课题是《物联网网关智能分析引擎》,基于此课题,我找了一个相似此课题的源代码并对其代码规范和风格进行分析。web
一、目录结构:sql
每个包下放置着不一样的代码实现,数据库
src:存放源文件编程
WEB-INF目录:必须目录数组
sql:存放数据库文件函数
web.xml:Web应用部署描述文件,必须目录工具
lib目录:存放第三方类库文件优化
TLD文件:标签库描述文件spa
其余静态文件:HTML、CSS、JavaScript、图片等
2.类编写规范
类的结构组织,通常按照以下的顺序:
1.常量声明
2.静态变量声明
3.成员变量声明
4.构造函数部分
5.Finalize部分
6.成员方法部分
7.静态方法部分
8.这种顺序是推荐的,在实际开发中能够按照必定的尺度修改,原则是程序更易读。如对方法的排序按照重要性,或按照字母顺序排列或按照方法之间的关系排列。
9.每一个方法(包括构造与finalize)都是一个段。多个变量声明按照逻辑共同组成一个段,段与段之间以空行分隔。
10.类声明时,要指出其访问控制,通常为没有修饰符,public,和private。
11.方法与方法之间,大的部分之间都须要以空行隔离。
12.编写通用性的类时,请遵照标准形式。包括定义equals()、hasCode()、toString()、Clone(实现Cloneable接口),并实现Comparable和Serialiable接口
13.对于设计期间不须要继承的类,尽可能使用final
3.变量编写规范
1.对成员变量, 尽可能采用private
2.每个变量声明/定义占一行(参数变量除外),如
int a; int b;
比int a,b; 更容易读, 更容易查找bug
3.局部变量在使用前必须初始化,通常在声明时初始化
4.变量的声明要放在程序块的开始位置
如
public void myMethod() { int int1 = 0; // beginning of method block if (condition) { int int2 = 0; // beginning of "if" block ... } }
一种例外状况是在for语句中,定义声明不只不占一行,还在表达式内部,彻底采用Eclips生成,如:
for(int i = 0; i<100; i++)
5.数组的申明采用 <数据类型[] + 变量名>方式如
char[] buffer;
而不是
char buffer[];
4.方法编写规范
1.对成员方法,不要轻易的采用public的成员变量。主要的修饰符有public, private, protected, 无
2.空方法中方法声明和函数体可都在一行。如: void func(){}
3.方法和方法之间空一行
4.方法的文档注释放在方法的紧前面,不能空一行。
5.避免过多的参数列表,尽可能控制在5个之内,若须要传递多个参数时,当使用一个容纳这些参数的对象进行传递,以提升程序的可读性和可扩展性
6.方法中的循环潜套不能超过2层
7.对于设计期间不须要子类来重载的类,尽可能使用final
8.每一个方法尽可能代码行数尽可能不要超过100行(有效代码行,不包括注释),但必须保证逻辑的完整性
9.接口中的方法默认级别为protected,只有很确认其它子系统的包会调用本身子系统的接口中的方法时,才将方法暴露为public.
5.语言使用规范
1.避免变量的定义与上一层做用域的变量同名。
2.局部变量在使用时刻声明,局部变量/静态变量在声明时同时初始化
3.在与常数做比较时常数放在比较表达式的前面如:
if(“simpleCase”.equals(obj))… if(null == obj)….
4.return语句中,不要有复杂的运算。
5.switch语句,须要一个缺省的分支
6. 代码编写规范
6.1 缩进
缩进应该是每行4个空格,在使用不一样的源代码管理工具时Tab字符将由于用户设置的不一样而扩展为不一样的宽度.
6.2 空行
相对独立的程序块之间、变量说明以后必须加空行。如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if ( !validNill(nill))
{
... // program code
}
repssnInd = sendData[index].repssn_index;
repssnNill = sendData[index].nill;
应以下书写
if (!validNill(nill))
{
... // program code
}
repssnInd = sendData[index].repssn_index;
repssnNill = sendData[index].nill;
|
6.3空格的使用
在两个以上的关键字、变量、常量进行对等操做时,它们之间的操做符以前、以后或者先后要加空格;进行非对等操做时,若是是关系密切的当即操做符(如->),后不该加空格。
说明:采用这种松散方式编写代码的目的是使代码更加清晰。
左括号和后一个字符之间不该该出现空格, 一样, 右括号和前一个字符之间也不该该出现空格. 下面的例子说明括号和空格的错误及正确使用:
CallProc( AParameter ); // 错误 CallProc(AParameter); // 正确
7. 注意代码的效率
编程时要常常注意代码的效率。
说明:代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。