Java常见开发规范

1 背景概述

做为程序员大军中的一员,笔者工做于沈阳数通畅联软件技术有限公司。在任职工做的第一天就听领导强调开发规范的重要性,可是笔者内心还想为何开发规范是最重要的,难道是不该该是实现功能就万事大吉了?java

随着时间的推移,笔者也经历了几个软件项目,愈来愈意识到开发规范的重要。今天笔者将本身的所听、所学以及我的的总结汇总出来与你们分享,但愿能够为你们提供帮助。程序员

2 目的意义

在团队协做开发的状况下,一套鲜明的编程风格,可让协做者、后继者和本身一目了然,在很短的时间内看清程序的结构,理解设计的思路。提升代码的可读性、可重用性、程序健壮性、可移植性和可维护性。制定开发规范的目的是为了提升软件开发效率及所开发的软件的可维护性,提升软件的质量。经过开发规范的约束提高自身的逻辑思惟能力,也侧面的提高我的编码能力及水平。编程

3 开发规范

做为软件项目的开发人员而言,对于功能代码,首要的要求是代码必须正确的,可以保证功能是可运行的,而且可以知足客户的需求。第二个的要求是代码必须清晰易懂,方便于其余的程序员可以容易理解代码的原理,加强代码的可读性,保证代码统一一致的编程风格。下面咱们经过格式、命名、权限、性能等几个方面来明确开发规范。安全

3.1 统一格式

  • 总体风格
  1. 采用阶梯层次组织程序代码。每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对下一行一样要再缩进4格。参考代码以下:
  2. 对变量的定义,尽可能位于函数的开始位置,对于全局变量/静态变量要定义与类名与构造函数之间。
  3. 空格表示分割,用一个空格运算符两边用一个空格隔开。如a + b = c,不能a+b=c;若是逗号语句后不还行,则须要在逗号后紧跟一个空格如:call(a, b, c);不能call(a,b,c)。
  • 方法定义
  1. 对于统一方法风格的定义,单个函数的有效代码长度当尽可能在100行之内,进一步能够保证代码逻辑清晰可见。
  2. 逻辑上相关序代码与其先后之程序代码间应以空白行加以分隔;在注释段与程序 段、以及不一样程序段插入空行。提升可读性。
  3. 单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其余类中,经过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。尽可能避免使用大类和长方法。
  • 嵌套关系
  1. IF语句的嵌套层数尽可能保证在3层之内,FOR/WHILE循环尽可能为两层循环。若是超过了限定层数应该考虑本身的代码逻辑是存在可调整性。
  2. 在同一个IF判断条件中布尔表达式中的布尔运算符(&&,||)的个数不超过10个。

3.2 命名规范

  • 包名定义
  1. 包名的前几个为固定名称,一般为公司的域名/项目的固定名称而后承接项目名称,若是域名尚未肯定的话,采用公司固定的几个名称。如:com.agileai.wm
  2. 在包名的接下来一个单词为模块的名称。如:用户模块,包名为com.agileai.wm.user
  3. 全部包的命名必须采用小写英文字母。命名均含有业务语义,能够快速地传达该类的用途。关于模块的访问操做,采用分层形式,通常分为:

模型(model)层操做:通常定义在com.agileai.wm.user.module.service中,其中user为模块名称。运维

控制器(controller)层操做:通常定义在com.agileai.wm.user.module.handler中。jsp

视图(view)层操做:通常定义在文件路径与对应的报名保持一致中。ide

  • 类名定义
  1. 参照java驼峰命名法,类名的首字母必须采用大写的形式,若是类名为多词组合而成的话,那么每一个词的首字母必须采用大写。如:ForumManagePostPortlet.java
  2. 选择命名具备业务语义,能快速地传达该类的用途。参考模型以下:

模型(model)层操做:通常定义为,接口类:ForumProvider.java   接口实现类:ForumProviderImpl.java。函数

控制器(controller)层操做:通常定义为XXXHandler,如:ForumPostLocatorHandler。性能

视图(view)层操做:通常定义为:XXX.jsp,如:ForumUserEdit.jsp。学习

  • 方法命名
  1. 选择有意义的名字,能快速地传达该方法的用途。参照java驼峰命名法,首字母以小写开头,每一个单词首字母大写(第一个单词除外)。
  2. 对数据操做的方法命名一般以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头。获取批量数据一般定义为findXXXRecords(),获取单条记录一般为getXXXRecord()。
  3. 在进行方法名名师一般会根据方法的行为命名,描述方法的意义,而不采用方法的目的命名。如:系统的添加新用户,用户能够前台注册,也能够管理员后台添加,方法会被重用,最好不要用使用register,采用add会更好写。
  • 变量命名
  1. 驼峰命名法,当变量名或函式名是由一个或多个单字连结在一块儿,而构成的惟一识别字时,首字母以小写开头,每一个单词首字母大写(第一个单词除外)
  2. 静态变量一般采用所有大写的形式来书写,对于采用多词合成的变量采用“_”来链接各单词。如:USER_LIST
  3. 除非是在循环中,不然通常不推荐使用单个字母做为变量名,i、j、k等只做为小型循环的循环索引变量。
  4. 若是须要对变量名进行缩写时,必定要注意整个代码中缩写规则的一致性。例如,若是在代码的某些区域中使用intCnt,而在另外一些区域中又使用intCount,就会给代码增长没必要要的复杂性。建议变量名中尽可能不要出现缩写。

3.3 权限定义

  1. public修饰符:它具备最大的访问权限,能够访问任何一个在CLASSPATH下的类、接口、异常等。它每每用于对外的状况,也就是对象或类对外的一种接口的形式。一般在通用调用、跨模块调用时选择public修饰符。
  2. protected修饰符:它主要的做用就是用来保护子类的。它的含义在于子类能够用它修饰的成员,其余的不能够,它至关于传递给子类的一种继承的东西。一般在须要继承时选择。
  3. default修饰符:什么都不写就是default,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,均可以相互访问,即便是父类没有用protected修饰的成员也能够。
  4. Private修饰符:它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰符为private的,一般不但愿被其余任何外部的类访问时选择private。

4 代码封装

做为面向对象的语言-JAVA,其三大基本特征就是封装、继承以及多态。其中封装是继承与多态的基础。经过封装不只可使代码逻辑更加清晰,同时也能够实现最小调整达到全局调整的目的。经过程序的代码的封装也能够提高复用率减小代码的冗余程度。下面咱们介绍常见的须要封装的几种场景如:本类复用、多类调用等。

4.1 本类复用

  1. 在实现代码封装以前须要明确不一样修饰符的访问权限,其中public为公共调用,private为私有调用,protected为继承调用。
  2. 在本类中屡次引用相同处理逻辑的程序代码,须要将其统一进行提取封装为公共调用的方法,并将其的访问权限定义为private最大程度的确保程序的安全性。
  3. 在本类中屡次引用的相同的变量值(一般为用于比较的固定字符串或者静态的变量值)须要将其定义在类名与构造函数之间,保证在后续维护过程当中能够实现最小调整便可调整全局的目的。

4.2 多类调用

  1. 对于被多处引用的结果属性,一般将其封装为对象类,将其属性定义为变量,并初始set、get方法对齐赋值或者取值。
  2. 对于某些属性变量值被多处调用,咱们一般将被调用的属性变量值定义在一个公共类中,并将其定义为static变量,保证在其余环境引用是能够直接使用类名.变量名进行调用。
  3. 在实现业务功能需求如Excel导入、导出,打印等功能,其功能可为单独提取实现,一般咱们将撰写Helper帮助类(XXXHelperHandler)提供实现功能,以便业务功能调用实现需求。

4.3 代码重构

  1. 不管是在项目中仍是平常的工做中,对于代码的重构均是不可缺乏的,一般咱们能够将公共的方法提取出来放在一个新的Handler中利用新的Handler继承BaseHandler原有的Handler继承新建立的Handler。
  2. 若是公共方法不能彻底复用,能够将公共的逻辑提取出来放在新的XXXHelperHandler中,在Handler中进行调用方法便可。

5 优点说明

5.1 下降成本

  • 好的开发规范能够尽量的减小一个软件的维护成本,虽然在开发过程当中要符合开发规范的条条框框看似浪费时间,可是从长远的软件代码维护来看更清晰的代码逻辑更节省交接以及维护是时间。下降了项目/产品的维护成本。
  • 好的开发规范能够加强软件代码的可读性,良好的编程规范能够实现代码的自注释,可让产品/项目的后续开发人员直观明确的了解代码的逻辑,较大幅度的下降了因代码逻辑混乱形成的工做交接困难,进一步影响了整个项目/产品的开发(运维)周期。经过周期的缩短减小人力的投入下降项目/产品的人员成本。

5.2 提升效率

好的开发规范能够最大限度的提升团队开发的效率;良好的开发规范能够保证代码风格的统一,保证整个项目/产品的开发风格是一致的,即便人员变动维护或者进行排错推断也能够减小因编程风格不统一形成的时间浪费。

5.3 能力提高

长期的规范性编码还能够促使开发人员养成良好的编程习惯,经过代码的逻辑性也可体现出开发人员的逻辑思惟,不断提高本身的开发的规范性也能够从侧面提高我的逻辑思惟能力。

6 我的总结

笔者做为数通畅联软件技术有限公司中的一名技术人员,从开始参加工做我的对公司强行要求开发规范的不理解至今深度认知开发规范的重要性。笔者在数通畅联这个你们庭中,天天耳濡目染学习java常见的开发规范如:命名、权限、格式等。经过自身的调整以及认知的提高也逐步提高了我的的编码能力。

笔者认为一个良好的编码习惯不只体现出我的的能力水平,也体现出其所在环境,所在团队的总体风气。但愿你们从此均可以培养本身的编码习惯使开发规范中的硬性要求成为本身的下意识习惯。

相关文章
相关标签/搜索