1 背景概述
作为程序员大军中的一员,笔者工作于沈阳数通畅联软件技术有限公司。在任职工作的第一天就听领导强调开发规范的重要性,但是笔者心里还想为什么开发规范是最重要的,难道是不应该是实现功能就万事大吉了?
随着时间的推移,笔者也经历了几个软件项目,越来越意识到开发规范的重要。今天笔者将自己的所听、所学以及个人的总结汇总出来与大家分享,希望可以为大家提供帮助。
2 目的意义
在团队协作开发的情况下,一套鲜明的编程风格,可以让协作者、后继者和自己一目了然,在很短的时间内看清程序的结构,理解设计的思路。提高代码的可读性、可重用性、程序健壮性、可移植性和可维护性。制定开发规范的目的是为了提高软件开发效率及所开发的软件的可维护性,提高软件的质量。通过开发规范的约束提升自身的逻辑思维能力,也侧面的提升个人编码能力及水平。
3 开发规范
作为软件项目的开发人员而言,对于功能代码,首要的要求是代码必须正确的,能够保证功能是可运行的,并且能够满足客户的需求。第二个的要求是代码必须清晰易懂,方便于其他的程序员能够容易理解代码的原理,增强代码的可读性,保证代码统一一致的编程风格。下面我们通过格式、命名、权限、性能等几个方面来明确开发规范。
3.1 统一格式
- 整体风格
- 采用阶梯层次组织程序代码。每层次缩进为4格,括号位于下一行。要求相匹配的大括号在同一列,对下一行同样要再缩进4格。参考代码如下:
- 对变量的定义,尽量位于函数的开始位置,对于全局变量/静态变量要定义与类名与构造函数之间。
- 空格表示分割,用一个空格运算符两边用一个空格隔开。如a + b = c,不能a+b=c;如果逗号语句后不还行,则需要在逗号后紧跟一个空格如:call(a, b, c);不能call(a,b,c)。
- 方法定义
- 对于统一方法风格的定义,单个函数的有效代码长度当尽量在100行以内,进一步可以保证代码逻辑清晰可见。
- 逻辑上相关序代码与其前后之程序代码间应以空白行加以分隔;在注释段与程序 段、以及不同程序段插入空行。提高可读性。
- 单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。尽量避免使用大类和长方法。
- 嵌套关系
- IF语句的嵌套层数尽量保证在3层以内,FOR/WHILE循环尽量为两层循环。如果超过了限定层数应该考虑自己的代码逻辑是存在可调整性。
- 在同一个IF判断条件中布尔表达式中的布尔运算符(&&,||)的个数不超过10个。
3.2 命名规范
- 包名定义
- 包名的前几个为固定名称,通常为公司的域名/项目的固定名称然后承接项目名称,如果域名还没有确定的话,采用公司固定的几个名称。如:com.agileai.wm
- 在包名的接下来一个单词为模块的名称。如:用户模块,包名为com.agileai.wm.user
- 所有包的命名必须采用小写英文字母。命名均含有业务语义,可以快速地传达该类的用途。关于模块的访问操作,采用分层形式,一般分为:
模型(model)层操作:一般定义在com.agileai.wm.user.module.service中,其中user为模块名称。
控制器(controller)层操作:一般定义在com.agileai.wm.user.module.handler中。
视图(view)层操作:一般定义在文件路径与对应的报名保持一致中。
- 类名定义
- 参照java驼峰命名法,类名的首字母必须采用大写的形式,如果类名为多词组合而成的话,那么每个词的首字母必须采用大写。如:ForumManagePostPortlet.java
- 选择命名具有业务语义,能快速地传达该类的用途。参考模型如下:
模型(model)层操作:一般定义为,接口类:ForumProvider.java 接口实现类:ForumProviderImpl.java。
控制器(controller)层操作:一般定义为XXXHandler,如:ForumPostLocatorHandler。
视图(view)层操作:一般定义为:XXX.jsp,如:ForumUserEdit.jsp。
- 方法命名
- 选择有意义的名字,能快速地传达该方法的用途。参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外)。
- 对数据操作的方法命名通常以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头。获取批量数据通常定义为findXXXRecords(),获取单条记录通常为getXXXRecord()。
- 在进行方法名名师通常会根据方法的行为命名,描述方法的意义,而不采用方法的目的命名。如:系统的添加新用户,用户可以前台注册,也可以管理员后台添加,方法会被重用,最好不要用使用register,采用add会更好写。
- 变量命名
- 驼峰命名法,当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,首字母以小写开头,每个单词首字母大写(第一个单词除外)
- 静态变量通常采用全部大写的形式来书写,对于采用多词合成的变量采用“_”来连接各单词。如:USER_LIST
- 除非是在循环中,否则一般不推荐使用单个字母作为变量名,i、j、k等只作为小型循环的循环索引变量。
- 如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。
3.3 权限定义
- public修饰符:它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。通常在通用调用、跨模块调用时选择public修饰符。
- protected修饰符:它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。通常在需要继承时选择。
- default修饰符:什么都不写就是default,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。
- Private修饰符:它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰符为private的,通常不希望被其他任何外部的类访问时选择private。
4 代码封装
作为面向对象的语言-JAVA,其三大基本特征就是封装、继承以及多态。其中封装是继承与多态的基础。通过封装不仅可以使代码逻辑更加清晰,同时也可以实现最小调整达到全局调整的目的。通过程序的代码的封装也可以提升复用率减少代码的冗余程度。下面我们介绍常见的需要封装的几种场景如:本类复用、多类调用等。
4.1 本类复用
- 在实现代码封装之前需要明确不同修饰符的访问权限,其中public为公共调用,private为私有调用,protected为继承调用。
- 在本类中多次引用相同处理逻辑的程序代码,需要将其统一进行提取封装为公共调用的方法,并将其的访问权限定义为private最大程度的确保程序的安全性。
- 在本类中多次引用的相同的变量值(通常为用于比较的固定字符串或者静态的变量值)需要将其定义在类名与构造函数之间,保证在后续维护过程中可以实现最小调整即可调整全局的目的。
4.2 多类调用
- 对于被多处引用的结果属性,通常将其封装为对象类,将其属性定义为变量,并初始set、get方法对齐赋值或者取值。
- 对于某些属性变量值被多处调用,我们通常将被调用的属性变量值定义在一个公共类中,并将其定义为static变量,保证在其他环境引用是可以直接使用类名.变量名进行调用。
- 在实现业务功能需求如Excel导入、导出,打印等功能,其功能可为单独提取实现,通常我们将撰写Helper帮助类(XXXHelperHandler)提供实现功能,以便业务功能调用实现需求。
4.3 代码重构
- 无论是在项目中还是日常的工作中,对于代码的重构均是不可缺少的,通常我们可以将公共的方法提取出来放在一个新的Handler中利用新的Handler继承BaseHandler原有的Handler继承新创建的Handler。
- 如果公共方法不能完全复用,可以将公共的逻辑提取出来放在新的XXXHelperHandler中,在Handler中进行调用方法即可。
5 优势说明
5.1 降低成本
- 好的开发规范可以尽可能的减少一个软件的维护成本,虽然在开发过程中要符合开发规范的条条框框看似浪费时间,但是从长远的软件代码维护来看更清晰的代码逻辑更节省交接以及维护是时间。降低了项目/产品的维护成本。
- 好的开发规范可以增强软件代码的可读性,良好的编程规范可以实现代码的自注释,可以让产品/项目的后续开发人员直观明确的了解代码的逻辑,较大幅度的降低了因代码逻辑混乱造成的工作交接困难,进一步影响了整个项目/产品的开发(运维)周期。通过周期的缩短减少人力的投入降低项目/产品的人员成本。
5.2 提高效率
好的开发规范可以最大限度的提高团队开发的效率;良好的开发规范可以保证代码风格的统一,保证整个项目/产品的开发风格是一致的,即使人员变更维护或者进行排错推断也可以减少因编程风格不统一造成的时间浪费。
5.3 能力提升
长期的规范性编码还可以促使开发人员养成良好的编程习惯,通过代码的逻辑性也可体现出开发人员的逻辑思维,不断提升自己的开发的规范性也可以从侧面提升个人逻辑思维能力。
6 个人总结
笔者作为数通畅联软件技术有限公司中的一名技术人员,从开始参加工作个人对公司强行要求开发规范的不理解至今深度认知开发规范的重要性。笔者在数通畅联这个大家庭中,每天耳濡目染学习java常见的开发规范如:命名、权限、格式等。通过自身的调整以及认知的提升也逐步提升了个人的编码能力。
笔者认为一个良好的编码习惯不仅体现出个人的能力水平,也体现出其所在环境,所在团队的整体风气。希望大家今后都可以培养自己的编码习惯使开发规范中的硬性要求成为自己的下意识习惯。
相关推荐
Java 开发规范 Java 开发规范是阿里巴巴 Java 开发手册的核心内容,本手册旨在码出高效,码出质量。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件...
Java开发规范是编程实践中至关重要的一个方面,它旨在提高代码质量、可读性、可维护性和团队协作效率。本资源包含一个"Java开发规范思维导图",由"小小鱼儿小小林"创建,采用xmind工具制作,允许进一步编辑和修改。...
在软件开发领域中,Java作为一种广泛使用的编程语言,其代码规范对于项目的可维护性和团队协作至关重要。本知识点将根据文档内容详细介绍Java软件开发中的代码组织与风格、注解规则、命名规范以及如何编写高质量的...
Java开发规范是编程实践中至关重要的指导原则,旨在提高代码质量、可读性、可维护性和团队协作效率。本文将深入探讨Java开发规范的关键点,包括代码组织、风格、注释和命名规则。 首先,代码组织和风格应当遵循...
《阿里巴巴Java开发规范》是Java开发者的一份重要指南,它为编写高质量、可维护的代码提供了明确的标准和建议。这份规范不仅适用于阿里巴巴集团内部的开发团队,也对广大Java开发者有着广泛的参考价值。以下是该规范...
以下是一些核心的Java开发规范和需要注意的事项: 1. **命名规范**: - 类名:使用驼峰式命名,首字母大写,如`MyClassName`。 - 方法名:同样采用驼峰式命名,但首字母小写,如`myMethodName`。 - 变量名:遵循...
Java开发规范,作为一门广泛应用的编程语言,其编程风格的重要性不言而喻。这份名为"Java开发规范(编程风格)"的资源,旨在为Java开发者提供一套标准和指导原则,以提高代码的可读性、可维护性和团队协作效率。这份...
Java开发规范文档是指导初级开发者遵循的一套标准,旨在提升代码质量和可维护性。文档的目的是确保开发人员能够以统一、规范的方式进行设计和编码,从而增强代码的可靠性、可读性、可修改性、可维护性和一致性。下面...
Java程序文件开发规范是软件开发领域中一项重要的指导文档,尤其在大型企业如阿里巴巴这样的公司中,遵循统一的开发规范对于提高代码质量、团队协作效率以及维护性至关重要。这份文档详细规定了如何编写和组织Java源...
《阿里巴巴Java开发规范插件Eclipse离线安装详解》 在Java开发中,遵循一套统一的编码规范至关重要,它能够提高代码的可读性,降低维护成本,提升团队协作效率。阿里巴巴作为中国领先的互联网企业,推出了针对Java...
Java开发规范是编程实践中的一套准则,旨在提高代码的可读性、可维护性和团队协作效率。本题涉及的Java开发规范主要涵盖命名规范、接口设计、代码格式、注释规则以及类和方法的设计原则。 1. **命名规范**: - ...
Java开发规范是软件开发过程中非常重要的一个环节,它旨在提高代码质量、降低维护成本、提升团队协作效率。这份“java开发规范.pdf”文档详细涵盖了多个关键领域,包括编程规约、异常日志处理、单元测试、安全性考量...
《Java软件开发规范详解》 在软件开发领域,遵循一定的编码和设计规范是至关重要的,它不仅能够提高代码的可读性和可维护性,还能增强团队间的协作效率,降低后期维护的成本。本篇文章将深入探讨《Java软件开发规范...
### Java代码开发规范详解 #### 一、引言 在软件开发过程中,团队协作与代码维护至关重要。良好的代码规范不仅能提升代码的可读性和可维护性,还能促进团队间的高效交流。本文档旨在为开发团队提供一套详尽的Java...
这里我们主要探讨Java、.NET和JavaScript三种编程语言的开发规范,以及应用开发接口规范。 1. Java开发规范: - **命名规范**:变量、方法和类的命名应清晰、有意义,遵循驼峰命名法。包名全小写,类名首字母大写...
Java后端开发规范是指导Java开发者遵循的一套标准和最佳实践,旨在提高代码质量、可维护性和团队协作效率。这份《Java后端开发规范》Word文档涵盖了多个关键方面,包括编程风格、命名规则、异常处理、注释规范、设计...
1. **开发规范类问题**:开发规范是确保代码质量和团队协作的重要基础。不遵循规范可能导致代码难以阅读、维护困难。例如,命名约定不一致,注释不足,或者没有充分利用面向对象的设计原则(如单一职责、开闭原则等...
JAVA安全编码规范参考文档深入分析了在Java开发中如何编写安全的代码,降低系统被攻击的风险。文档内容涵盖了安全编码的基本原则以及常见漏洞的安全编码方法。 一、安全编码基本原则 1. 所有输入数据都是有害的 在...
本资源包含三份关键文档:阿里Android开发手册、阿里Java开发规范以及Alibaba Java Coding Guidelines的插件,旨在帮助开发者遵循阿里巴巴的编码标准。 1. **阿里Android开发手册**: 这份手册详细阐述了Android...