分析一套源代码的代码规范和风格并讨论如何改进优化代码

分析一套源代码的代码规范和风格并讨论如何改进优化代码

我的工程实践课题是《物联网网关智能分析引擎》,基于此课题,我找了一个类似此课题的源代码并对其代码规范和风格进行分析。

1、目录结构

分析一套源代码的代码规范和风格并讨论如何改进优化代码_第1张图片

 

每一个包下放置着不同的代码实现,

src:存放源文件

WEB-INF目录:必须目录

sql:存放数据库文件

web.xml:Web应用部署描述文件,必须目录

lib目录:存放第三方类库文件

TLD文件:标签库描述文件

其他静态文件: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. 注意代码的效率
编程时要经常注意代码的效率。

说明:代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。

 

你可能感兴趣的:(分析一套源代码的代码规范和风格并讨论如何改进优化代码)