JavaEE新开发规范文档
- 格式:doc
- 大小:327.00 KB
- 文档页数:15
Java 开发规范文档一:目的使本组织能以标准的,规范的方式设计和编码。
通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性,可读性,可修改性,可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。
二:代码组织与风格1:长度:为便于阅读和理解,单个函数的有效代码长度当尽量在100行以内(不包括注释行),当功能模块过大时往往采用使用子函数将相应的功能抽取出来,这也有利于提高代码的重用度。
2:单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。
尽量避免使用大类和长方法。
3:间隔:类,方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。
操作符两端应当各空一个字符以增加可读性。
三:注释1:注释应该增加代码的清晰度。
代码注释的目的时要使代码更易于被其他开发人员等理解。
2:保持注释的简洁。
3:注释信息应该包括代码的功能。
4:除变量定义等较短语句的注释使用行尾注释外,其他注释当避免使用行尾注释。
5:JavaDoc规范对类,方法,变量等注释需要符合javadoc规范,对每个类,方法都应详细说明其功能条件,参数等。
类注释中应当包含版本和作者信息。
1)类,接口注释在类,接口定义之前当对其进行注释,包括类,接口的目的,作用,功能,继承于何种父类,实现的接口,实现的算法,使用方法,示例程序等。
2)方法注释以明确该方法功能,作者,各参数含义以及返回值等。
3)其他注释应对重要的变量及不易理解的分支条件表达式加以注释,以说明其含义等。
四命名规范1:对变量,类,接口及包的命名应该使用英文。
严禁使用汉语拼音及不相关单词命名。
更不可以使用汉字来进行命名。
采用大小写混合,提高名字的可读性。
一般应该采用小写字母,但时类和接口的名称的首字母,以及任何中间单词的首字母应该大写。
包名全部小写。
java开发规范(一)java命名规范1、变量、成员、方法名统一采用驼峰命名(lowerCamelCase),做到见语知其义例子:变量——用户数据(userList)、方法——getUserData(int type)等。
说明:正常变量定义使用驼峰命名,特殊的如DTO\VO\DO等除外。
2、类名的定义(1)普通类名采用大写字母开始;(2)抽象类采用Abstract或Base开头。
例子:普通类——class UserModel,抽象类——abstract class AbstractUserDefinition等。
3、常量、类型、接口、子类的定义(1)常量使用全大写且单词之间用"_“隔开; (2)boolean变量不能使用is开头;(3)接口尽量不要修饰符、子类紧跟接口追加Impl。
例子:常量——SORT_TYPE,布尔类型——flag,接口——UserService,实现类——UserServiceImpl等。
说明:常量不可组装,需要原子性定义,不能出现"KEY”+SORT_TYPE 这种内部出现。
4、包名、异常、枚举、方法名称的定义(1)包名一律采用小写; (2)异常都采用_Exception结尾; (3)枚举都是以Enum结尾;(4)方法名称——根据方法内容采用如插入insert-*。
例子:异常——UserException,包名——com.test,枚举——UserEnum,方法名称——insertUser等。
5、领域模型定义规范:主要是以VO\DTO\DO等结尾例子:用户数据——UserDTO等(1)数据对象:xxxDO,xxx 即为数据表名。
(2)数据传输对象:xxxDTO,xxx为业务领域相关的名称。
(3)展示对象:xxxVO,xxx一般为网页名称。
(4)POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
(二)代码格式规范1、括号代码要求左大括号前不换行、左大括号后换行、右大括号前换行、右大括号后还有else等代码则不换行;表示终止的右大括号后必须换行。
Java开发规范信息技术中⼼IT应⽤开发技术规范Java开发规范版权说明本⽂件中包含的任何⽂字叙述、⽂档格式、插图、照⽚、⽅法、过程等内容,除另有特别注明,版权均属太平洋保险所有。
未经许可任何⼈不得将此⽂件中的任何部分以任何形式进⾏复制,储存和传播。
版本记录⽬录1.概述 (1)1.1.⽂档⽬的 (1)1.2.适⽤范围 (1)1.3.⽂档说明 (1)1.4.术语定义 (1)2.技术选型规范 (1)2.1.开发⼯具指南 (2)2.2.J AVA标准 (2)2.3.源代码管理⼯具 (2)2.4.依赖管理⼯具 (2)2.5.第三⽅组件选型 (2)3.总体技术规范 (2)3.1.原则 (2)3.1.1.程序对象重⽤原则 (2)3.1.2.依赖解除原则 (3)3.1.3.常量使⽤原则 (3)3.1.4.第三⽅代码使⽤原则 (3)3.1.5.⾃动代码检查原则 (4)3.1.6.⾃动单元测试原则 (4)3.1.7.⽇志处理原则 (4)3.2.规范 (6)3.2.1.应⽤分层规范 (6)3.2.2.编码字符集规范 (7)3.2.3.项⽬⼯程规范 (7)3.2.4.代码⽬录结构规范 (8)3.2.5.对象命名规范 (9)3.2.6.代码注释规范 (10)3.3.指南 (12)3.3.1.java代码指南 (12)3.3.2.HTML/JAVASCRIPT代码指南 (18)4.展现层技术规范 (19)4.1.原则 (19)4.1.1.事物⼀致性原则 (19)4.1.2.浏览器⽀持原则 (19)4.1.3.插件使⽤原则 (19)4.1.4.信息提⽰原则 (20)5.业务层技术规范 (20)5.1.原则 (20)5.1.1.数据访问分离原则 (20)5.1.2.配置信息分离原则 (20)5.2.规范 (21)5.2.1.业务逻辑层设计规范 (21)5.2.2.编码规范 (21)5.2.3.业务规则与⼯作流规范 (22)6.数据层开发规范 (23)6.1.原则 (23)6.1.1.ORM框架使⽤原则 (23)6.1.2.复杂SQL使⽤原则 (23)6.1.3.存储过程与触发器使⽤原则 (24)6.1.4.数据量控制原则 (24)6.1.5.绑定变量使⽤原则 (25)6.2.规范 (25)6.2.1.DAO层使⽤规范 (25)4.1.1.DAO类注⼊配置规范 (25)4.1.2.实体类代码实现规范 (26)1.概述1.1.⽂档⽬的《中国太平洋保险股份有限公司IT应⽤开发技术规范》(以下简称太保IT开发规范)定义了IT应⽤项⽬开发时应遵循的技术指南,作为各项⽬组的开发指导性指南和代码审查的依据。
开发规范文档一、引言开发规范文档是为了规范开发人员在软件开发过程中的行为和规范,以确保软件开发的高效性和质量。
本文档旨在对开发规范进行详细说明,以便开发人员在日常工作中遵循。
二、命名规范1. 变量命名:变量名应具有描述性,能清晰表达其用途,采用驼峰命名法。
2. 函数命名:函数名应具有描述性,能清晰表达其功能,采用驼峰命名法。
3. 类命名:类名应具有描述性,能清晰表达其用途,采用驼峰命名法。
4. 文件命名:文件名应具有描述性,能清晰表达其内容,采用小写字母和下划线组合命名。
三、代码规范1. 缩进和空格:采用4个空格进行缩进,禁止使用Tab键。
2. 注释规范:代码中应有清晰的注释,注释应该对代码的功能、用途进行解释。
3. 异常处理:对可能出现的异常情况进行处理,避免程序崩溃。
4. 代码复用:尽量避免重复编写相同功能的代码,提取公共部分进行封装和复用。
四、数据库规范1. 表设计规范:数据库表应该具有清晰的结构设计,避免冗余和不必要的字段。
2. 索引规范:对经常用于查询的字段添加索引,提高数据库查询效率。
3. 数据备份规范:定期对数据库进行备份,以防数据丢失或损坏。
五、安全规范1. 数据加密:对用户的敏感信息进行加密存储,确保数据安全。
2. 权限控制:对不同角色的用户进行权限控制,确保用户只能访问其权限范围内的数据和功能。
3. 防止SQL注入:对用户输入的数据进行过滤和检验,避免SQL注入攻击。
六、测试规范1. 单元测试:对每个模块进行单元测试,确保模块功能的正确性。
2. 集成测试:对整个系统进行集成测试,确保各模块之间的协作正常。
3. 性能测试:对系统进行性能测试,确保系统在高并发情况下的稳定性和性能。
七、版本控制规范1. 版本命名规范:版本号应该具有一定的规范,能够清晰表达版本的变化和更新内容。
2. 分支管理规范:对不同的功能和模块进行分支管理,确保开发过程的清晰和有序。
八、总结开发规范文档对于软件开发团队的工作至关重要,遵循规范能够提高开发效率和质量,减少不必要的错误和问题。
开发规范与要求范文开发规范是一系列的编码原则、技术规范、文档规范等的集合,旨在确保团队开发的代码质量、可读性、可维护性、可扩展性,并提高团队合作效率。
本文将介绍开发规范的要求以及其对项目开发的重要性。
一、命名规范1.变量、函数、方法的命名应具有清晰的表达意义,使用有意义的英文单词或单词的组合。
2.类名、接口名应使用名词或名词词组,并使用大写开头的驼峰命名法。
3.常量名应使用大写字母加下划线的形式,如:MAX_COUNT。
4.避免使用容易混淆的命名,如:i1,l1,O0等。
二、缩进与排版规范1. 使用合适的缩进风格,如四个空格或一个Tab,统一团队内部的缩进风格。
2.代码块的开始和结束要与其对应的可见的包含结构对齐。
3.行宽应控制在80-120个字符之间。
三、代码注释规范1.对于代码中的每个模块或功能,必须提供必要的注释说明。
2.注释应简明扼要、准确清晰,解释代码的关键逻辑以及设计思想。
3.注释应使用英文书写,并遵循一定的规范,如在注释前使用特定的修饰符以区分说明的对象。
四、代码规范1.遵循单一职责原则,每个函数、方法只负责一个功能,尽量避免一个函数或方法实现多种功能。
2.遵循开闭原则,尽量使用扩展而非修改已有的代码。
3.避免使用变量的魔法数值,应提取为常量或配置项。
4.代码尽量简单清晰,可读性强,避免冗余的代码和复杂的逻辑结构。
五、测试规范1.编写单元测试代码,保证代码的正确性和稳定性。
2.合理组织测试用例,覆盖代码的各种情况,包括正常情况和异常情况。
3.定期运行测试用例,及时发现和解决问题,确保程序的健壮性。
六、文档规范1.编写开发文档和用户文档,清晰描述程序的设计思路、开发流程、代码的使用方法等。
2.文档内容应准确、详尽,方便其他开发人员和用户了解项目的细节。
开发规范对于项目开发具有重要的作用:1. 提高代码质量和可维护性:规范的代码易于阅读和理解,减少错误和bug的产生,提高代码的可维护性和可读性。
第1章引言今天的企业需要扩大自己的影响, 缩减自己的成本, 并且提高自己与客户,雇员,供货商之间沟通的效率。
通常, 提供这类服务的应用程序必须结合现存的企业信息系统(EIS),具备新的业务功能为更广泛的用户群提供服务。
这些服务要求具有:•高可用性, 以满足今天商业全球化的需求•安全性, 以保护用户的隐私和维护企业的安全•可靠性和可伸缩性, 以确保业务被准确及时地处理大多数情况下,企业服务由多层应用程序实现。
中间层整合了现存的EIS,具备新服务的业务功能和数据。
成熟的Web技术用来提供用户层服务,简化业务访问的复杂性,并且消除或大大减少对用户的管理和培训。
Java TM平台企业版(Java TM EE) 降低了开发多层次企业级服务的成本和复杂性。
Java EE 应用程序可以快速地部署和强化,使企业轻松地应对竞争压力。
Java EE方案可以实现上述目标,这需要定义一个标准的架构,以下是其组成元素:•Java EE平台 - 一个托管Java EE应用程序的标准平台。
•Java EE兼容性测试套件 - 兼容性测试套件用于检验Java EE平台产品是否符合Java EE平台标准。
•Java EE可参考的实现- 一个可参考的实现是一个Java EE 应用程序原型,提供一套可行的Java EE平台定义。
•Java EE蓝图 - 一套开发多层次瘦客户端服务的最佳实践。
本文档描述了Java EE平台规范。
它定义了一个Java EE平台产品必须达到的标准。
1.1 感谢本规范是多人协作的成果。
Vlada Matena撰写了第一个草案以及事务管理和命名的章节。
Sekhar Vajjhala, Kevin Osborn,和Ron Monzillo撰写了安全的章节。
Hans Hrasna撰写了应用程序组装和部署的章节。
Seth White撰写了JDBC API 标准。
Jim Inscore, Eric Jendrock,和Beth Stearns提供了编辑上的帮助。
技术规范书
1. 引言
技术规范书是为了明确软件或系统开发过程中的技术规范而编写的。
本文档旨
在提供必要的技术规范指导,以确保项目开发的高效性、可靠性和可维护性。
本文档的受众对象是项目开发人员、测试人员和相关技术人员。
2. 开发工具和环境
2.1 开发工具
•开发语言:本项目使用Java语言进行开发。
•集成开发环境(IDE):推荐使用Eclipse或IntelliJ IDEA。
•版本控制工具:本项目使用Git作为版本控制工具。
2.2 开发环境
•操作系统:本项目兼容Windows、Linux 和macOS 等主要操作系统。
•Java开发环境:要求使用JDK 1.8及以上版本。
•其他依赖:项目所需的第三方库和框架需使用Maven进行统一管理。
3. 编码规范
在本项目中,我们遵循以下编码规范: - 使用驼峰命名法(camelCase)命名变量、方法和类。
变量名应具有描述性,尽量避免使用缩写和简短的命名。
- 每个Java源文件只定义一个类,类名和文件名应保持一致。
接口名称应以。
java开发规范文档
以下是一个简单的Java开发规范文档:
1. 命名规范:
- 类名使用首字母大写的驼峰命名法,如:MyClass
- 方法名以小写字母开头的驼峰命名法,如:myMethod
- 变量名使用小写字母开头的驼峰命名法,如:myVariable - 常量名使用全大写字母和下划线的命名法,如:
MY_CONSTANT
2. 缩进和格式:
- 使用4个空格进行缩进
- 在每一行结束后使用分号
- 在大括号的前面留空格,如:if (condition) {
- 在逗号后面留空格,如:int a, b, c;
3. 注释规范:
- 使用JavaDoc格式注释解释类、方法和变量的功能和用法 - 在代码中适当添加注释,解释代码的实现逻辑
4. 异常处理:
- 使用try-catch-finally语句块来处理异常
- 不要使用空的catch块,尽量提供明确的异常处理逻辑
5. 最佳实践:
- 使用面向对象的思想设计代码结构
- 避免使用全局变量,尽量使用局部变量和参数传递数据
- 不要在循环中创建对象,尽量在循环外部创建对象
- 使用合适的数据结构和算法来提高性能
这只是一个简单的Java开发规范文档,实际中可以根据团队的需求和项目的特点进行适当的修改和补充。
JAVA技术架构及开发规范文档一、概述二、技术架构1.三层架构基于业务功能的划分,将系统划分为表示层、业务逻辑层和数据持久层。
这样可以实现业务逻辑与表示层、数据持久层的解耦,提高代码的复用性和可维护性。
2.MVC模式使用MVC(Model-View-Controller)模式进行开发,将系统分为模型层、视图层和控制层,使各层之间的职责分明,提高代码的可维护性和可测试性。
3.面向对象设计原则遵循SOLID原则,尽量使用面向对象的设计和编程,其中包括单一职责原则、开闭原则、里式替换原则、接口隔离原则和依赖反转原则等。
三、开发规范1.命名规范采用驼峰命名法,变量名、方法名、类名等均应具有描述性,避免使用拼音或缩写。
2.代码风格代码应该具有良好的缩进和格式,增加代码的可读性。
要求适当添加注释,注释应说明代码的目的和使用注意事项。
3.异常处理合理处理异常,避免直接抛出异常,而是进行捕获和处理。
对于特定的业务异常,可以定义自定义异常类,并进行抛出。
4.注释规范需要对代码进行充分的注释,注释的风格应明确,注释应配合代码,解释代码的用途和作用。
5.单元测试开发过程中应进行单元测试,确保代码的正确性。
对于每个功能模块,编写相应的单元测试用例进行测试,覆盖率应尽量达到100%。
6.安全性对于涉及到的用户输入数据和敏感数据,应进行有效的验证和过滤,防止恶意注入和跨站脚本攻击等安全威胁。
7.日志规范所有的关键操作和错误信息都应记录到日志中,日志级别应根据实际需要进行配置。
8.数据库规范数据库表设计应符合第三范式,避免数据冗余和数据不一致。
使用参数化查询和预编译语句,提高数据库查询性能和安全性。
9.版本管理使用版本管理工具(如Git)进行代码管理,每个开发人员都应具备良好的版本管理和协同开发能力。
四、总结本文档主要介绍了JAVA技术架构及开发规范。
通过采用三层架构和MVC模式,可以实现代码的复用性和可维护性。
同时,遵循JAVA的面向对象设计原则,提高代码的可测试性和可扩展性。
开发规范文档1. 引言。
开发规范文档是为了规范团队成员在开发过程中的行为和规范,以提高开发效率、降低错误率、提高代码可维护性和可读性而制定的。
本文档旨在为开发人员提供一套统一的规范,以便大家在开发过程中能够更加高效地协作,提高团队整体的开发水平。
2. 代码规范。
2.1 命名规范。
变量名、函数名、类名等命名应具有描述性,能够清晰地表达其用途。
变量名使用驼峰命名法,类名使用大驼峰命名法,常量名使用全大写下划线分隔。
禁止使用拼音或无意义的命名,以及使用中文命名。
2.2 缩进和空格。
使用4个空格作为一个缩进,禁止使用Tab键。
运算符两侧应有空格隔开,增强代码的可读性。
2.3 注释规范。
代码中应有必要的注释,注释应该清晰明了,能够帮助他人理解代码的用途和实现方式。
禁止使用无意义的注释,注释应该与代码同步更新。
3. 版本管理规范。
3.1 分支管理。
项目应该有主分支和开发分支,主分支用于发布稳定版本,开发分支用于开发新功能。
每个新功能应该在一个独立的分支上进行开发,开发完成后再合并到开发分支。
3.2 提交规范。
提交代码时应该写清楚本次提交的内容,禁止一次性提交大量无关的修改。
提交信息应该清晰明了,能够帮助他人理解本次提交的目的和内容。
4. 文档编写规范。
4.1 文档格式。
文档应该使用统一的格式进行编写,包括标题、目录、正文等部分。
文档中的图片应该清晰可见,禁止使用模糊不清的图片。
4.2 内容规范。
文档内容应该清晰明了,能够帮助读者快速理解文档的内容。
文档中的代码应该清晰可读,禁止使用混乱的代码示例。
5. 测试规范。
5.1 单元测试。
每个功能模块应该有对应的单元测试,保证功能的正确性和稳定性。
单元测试应该覆盖尽可能多的代码路径,以提高测试的覆盖率。
5.2 集成测试。
在开发完成后应该进行集成测试,保证不同模块之间的协作正常。
集成测试应该模拟真实的使用场景,以保证系统的稳定性和可靠性。
6. 总结。
开发规范文档是团队协作的重要工具,能够帮助团队成员更加高效地协作,提高团队整体的开发水平。
JAVA开发设计规范JAVA开发设计规范是指在进行JAVA开发过程中,为了统一编码风格、提高代码可读性和可维护性而制定的一系列约定和规范。
本文将从命名规范、代码布局规范、注释规范、异常处理规范、编码规范等方面介绍JAVA开发设计规范。
1.命名规范变量、方法和类名应使用有意义的英文单词或缩写,遵循驼峰命名法。
-变量名应代表该变量的含义,且不使用无意义的单字母命名。
-方法名应清晰表达方法的功能和作用。
-类名应使用名词或名词短语,首字母大写。
2.代码布局规范-使用缩进方式使代码结构清晰可读。
-使用空行分隔不同的功能块。
-代码行长度应限制在80个字符之内,方便查看和打印。
3.注释规范-对于每个类、方法和成员变量,都应添加必要的注释说明其功能和用法。
-注释应该与代码同步更新,并保持准确性。
-注释应使用简洁明了的语言,不应包含冗余信息。
4.异常处理规范- 在代码中必须使用try-catch块处理可能抛出的受检异常。
- 不应使用catch(Exception e)的方式处理异常,在catch块中应提供相应的处理逻辑。
- 应避免在catch块中直接打印异常信息,而是应使用日志框架打印异常。
5.编码规范-尽量使用局部变量而不是全局变量。
-代码中不应包含硬编码的常量,应使用常量变量或配置文件存储。
-代码中应避免使用魔法数字,而使用有意义的命名常量代替。
-尽量避免使用复杂的表达式和语句,提高代码的可读性。
以上只是JAVA开发设计规范的一部分。
在实际开发过程中,还应根据团队的需求和实际情况进行适当的调整和补充。
良好的编码规范可以提高代码的可读性、可维护性和可扩展性,从而提高开发效率和代码质量。
同时,开发人员应定期进行代码审查和重构,以保证代码的质量和规范的执行。
Java编程规范(DOC)预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制Java编程规范目录Java编程规范 (1)1编码规则 (1)2命名规范 (7)2.1类名、变量名(非final)、方法名 (7)2.2驼峰式命名 (7)2.3不能使用没有任何含义的英文字母进行命名 (7)2.4不能使用拼音进行命名,统一使用准确的英文进行命名 (8)2.5包名 (8)2.6接口与类的命名 (8)2.7抽象类命名 (8)2.8实现类命名 (8)2.9工具类命名 (8)2.10变量命名 (8)2.115、方法命名 (9)2.12系统的命名约定 (9)1编码规则1、数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close(),如果有多个IO对象需要close(),需要分别对每个对象的close()方法进行try-catch,防止一个IO对象关闭失败其他IO对象都未关闭。
手动控制事务提交也要进行关闭,对大对象进行关闭操作示例:try{// ... ...}catch(IOException ioe){//... ...}finally{try{out.close();}catch(IOException ioe){//... ...}try{in.close();}catch(IOException ioe){//... ...}}2、系统非正常运行产生的异常捕获后,如果不对该异常进行处理,则应该记录日志。
说明:此规则指通常的系统非正常运行产生的异常,不包括一些基于异常的设计。
若有特殊原因必须用注释加以说明。
logger.error(ioe,“[类.方法]描述”,参数);示例:try{//.... ...}catch(IOException ioe){logger.error(ioe);}3、自己抛出的异常必须要填写详细的描述信息。
Java开发规范(参照阿⾥规范改编)JAVA 开发规范v1.0.0 2021/08/27本篇规范基于阿⾥巴巴、华为的开发⼿册,补充了⼀些细节。
规范不是为了约束和禁锢⼤家的创造⼒,⽽是为了帮助⼤家能够在正确的道路上,尽可能的避免踩坑和跑偏。
规范可以让我们⽆论单枪匹马还是与众⼈同⾏的时候都能得⼼应⼿。
规范可以让我们在⾯对⽇益变态的需求和做代码接盘侠的时候,更优雅从容。
⼀、编程规范1、好代码的原则我们参考 Kent Beck 的简单设计四原则来指导我们的如何写出优秀的代码,如何有效地判断我们的代码是优秀的。
通过所有测试(Passes its tests):强调的是外部需求,这是代码实现最重要的尽可能消除重复 (Minimizes duplication):代码的模块架构设计,保证代码的正交性,保证代码更容易修改尽可能清晰表达 (Maximizes clarity):代码的可阅读性,保证代码是容易阅读的更少代码元素 (Has fewer elements):保证代码是简洁的,在简洁和表达⼒之间,我们更看重表达⼒以上四个原则的重要程度依次降低,这组定义被称做简单设计原则。
22-1全部采⽤⼩写⽅式,以中划线分隔。
正例:mall-management-system / order-service-client / user-api反例:mall_management-system / mallManagementSystem / orderServiceClient2-2模块名称:{项⽬名称}-{模块名称} 模块名称简洁体现职责模块名字作为模块组件的名称(即maven中的标签)2-3包名不应该⽤来表达模块完整的意思,包名应该仅⽤作与同包下的其他包做区分。
但尽可能使⽤单个单词命名,如果单个单词⽆法正确表达,可采⽤.分割,实在不⾏可采⽤全部单词⼩写(参考的spring命名)2-4类名使⽤ UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO ;抽象类命名使⽤ Abstract 或 Base 开头;异常类命名使⽤ Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾;如果使⽤到了设计模式,建议在类名中体现出具体模式;枚举类名建议带上 Enum 后缀,枚举成员名称需要全⼤写,单词间⽤下划线隔开。
Java开发规范第1章序言本规范的目的在于:建立一个可行可操作的编程标准、约定和指南,以规范公司java代码研发工作。
2013年为公司的质量年,为了提高公司研发能力,该规范的制定是为了规范java代码开发,提高java开发质量,从代码的层面规范并提高java项目的研发水平。
该规范由运营中心技术小组制定,运营中心技术小组将结合PMD检查工具以及相应的检查工具,组织技术监控人员对重点项目以及新的java项目定期检查,对代码质量进行评估,对代码质量较差限期整改,并报运营中心备案作为项目考核依据。
本规范适用于2013年公司java代码研发规范。
本规范的内容包括两个方面:java开发一般规范,以及java代码开发安全性规范。
Java代码开发一般规范主要从java基本语法,代码格式,耦合性以及设计方面,以及代码质量因子等进行描述;java代码开发安全性规范主要从sql注入,资源注入,跨站脚步,安全边界违例,系统信息泄露进行描述。
为了方便并配合PMD检查工具等相应检查工具,方便开发者针对违规代码进行调整,本规范中java一般开发规范描述形式将结合PMD,并提供示例代码,其形式如下:⏹规范描述:⏹PMD规则名称:⏹PMD级别(注1):⏹违规示例代码:⏹合法示例代码:本规范中java安全开发规范部分将结合具体项目,对出现安全隐患的代码进行分析,以及相应的解决办法和思路上进行分析,其具体格式如下:⏹风险及危害:⏹应对措施:⏹非安全代码示例⏹安全代码示例本规范解释权归运营中心技术小组,属于运营中心为了提供公司研发水平以及质量的一系列措施中的一部分,在后续的版本中将根据具体需要进行修改以及调整。
技术小组审核后给出相应的整改意见,对于有争议的问题,可直接与运营中心技术小组领导成员沟通。
第2章要求气象局项目组的所有java开发人员,编写的代码必须满足第三章的所有规范(每个标题为一个规范)。
项目组成员之间每周或每月互相检查对方编写的代码,若发现问题,要求对方及时更正。
JAVA开发规范文档引言:为了提高JAVA开发效率和可维护性,降低开发过程中的错误率,特制定此开发规范文档。
本规范适用于所有JAVA开发项目,包括前端、后端和移动端开发。
1.命名规范1.2 类名:采用驼峰命名法,首字母大写,如UserService。
1.3 方法名:采用驼峰命名法,首字母小写,如getUserList。
1.4 变量名:采用驼峰命名法,首字母小写,如userName。
1.5常量名:全部大写,使用下划线分隔,如MAX_COUNT。
1.6 接口名:采用驼峰命名法,首字母大写,如UserService。
1.7 枚举名:采用驼峰命名法,首字母大写,如ColorType。
2.注释规范2.2方法或代码块内应有必要的注释,解释方法的功能和输入输出参数的含义。
2.3注释要简洁明了,不得使用拗口难懂的词汇。
2.4注释要与代码保持同步更新。
3.代码风格规范3.1缩进:使用4个空格进行缩进,不得使用制表符。
3.2行宽:每行代码不得超过120个字符。
3.3空行:合理使用空行,以提高代码的可读性。
3.4操作符前后空格:操作符前后必须有一个空格,如a=b+c。
3.5大括号位置:大括号应该独占一行,且与前面的语句间有一个空格。
3.6代码块注释:使用//或/*...*/对代码块进行注释,描述代码块的功能和作用。
3.7异常处理:所有异常都需要捕获处理,不允许直接忽略异常。
3.8类内方法的顺序:构造方法、公有方法、私有方法,按照方法访问权限从公有到私有的顺序排列。
4.代码规范4.1不允许出现未使用的变量和方法。
4.2不允许出现硬编码的常量,应使用常量定义。
4.3 字符串拼接使用StringBuilder或StringBuffer,避免使用+操作符。
4.4尽量使用接口和抽象类进行编程,而不是具体实现类。
4.5 使用try-with-resources来释放资源,如文件流、数据库连接等。
4.6尽量使用JDK提供的集合类,避免使用原生数组。
Java 开发安全规范目录一. 安全隐患 (1)1.1P ROCESS B UILDER注入允许攻击者执行代码 (1)确保PUBLIC和STATIC字段被定义为FINAL (1)包含敏感调用的方法应标记为FINAL (2)执行数据库查询前设置查询类型 (3)实现S ERIALIZABLE接口时没有定制序列化协议 (3)限制特权代码的可访问性 (4)确保S ECURITY M ANAGER权限检查的完整性 (6)避免在PUBLIC方法中返回PRIVATE内部数据 (7)避免危险的PUBLIC STATIC FINAL数组声明 (8)二. 环境配置 (8)不要将多类URL映射到同一个S ERVLET (8)不要在配置文件中存放敏感信息 (9)确保S ERVLET有名字并正确配置 (10)限制字段最大长度避免D O S或注入攻击 (11)三. 代码质量 (12)谨慎使用T HREAD.YIELD()方法 (12)使用NOTIFY A LL方法替代NOTIFY (12)避免使用T HREAD的STOP方法 (13)重新抛出T HREAD D EATH异常 (13)确保锁在发生异常时被正确释放 (13)避免在获取锁后调用SLEEP方法 (15)避免在FINALLY块中抛出异常 (15)四. 安全特性 (17)确保密码学加密算法密钥强度 (17)避免使用过时的加密算法 (17)避免使用不安全的填充(P ADDING)模式 (17)避免使用弱初始化向量(I NITIALIZATION V ECTOR) (17)不要依赖IS S ECURE()方法来决定是否传递敏感信息 (18)在敏感信息不再需要时显式清除它 (18)一. 安全隐患1.1 ProcessBuilder注入允许攻击者执行代码与Runtime类相似,如果ProcessBuilder对象根据不可信输入被构造,则有可能被攻击者用来进行命令注入攻击。
错误的用法:public static void execUsingCommand(String command) throws Exception { String[] args = new String[] { "cmd", "/c", "dir " + command };Process process = new ProcessBuilder().command(args).start();InputStream is = process.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line;while ((line = br.readLine()) != null) {System.out.println(line);}}在上述代码中,如果command参数来自不可信输入,如网页请求参数或请求URL,则代码存在命令注入漏洞。
J2EE 开发规范文档目录附录: (3)一、命名约定 (4)1.源代码文件中的几个基本包 (4)2.所有包名均用小写字母来命名 (4)3.类中的变量应该使用骆驼命名法 (4)4.类中的方法命名同变量。
(4)5.S TRUTS的命名 (4)6.S TRUTS的跳转页JSP命名应与请求路径相同 (4)二、STRUTS使用以及类使用约定 (4)1.在整个STRUTS2 FAMEWORK中的一般流程如下: (4)2.关于PO(持久对象P ERSISTENT O BJECT) (5)3.所有ACTION类都应该继承MON.ACTION中的相关父B ASE A CTION类 (5)4.A CTION主要负责控制器任务 (5)5.关于不同子模块调用同一个A CTION的情况 (6)6.关于S TRUTS的FORWARD配置 (6)7.方法类中的参数设定 (6)三、自定义异常类使用约定 (6)1.必须继承COM.GOLDPALM.TOUR.EXCEPTION.G OLDPALM E XCEPTION 异常类 (6)2.必须重写默认构造方法以及带S TRING参数的构造方法 (6)3.默认构造方法必须有一个默认的异常抛出说明 (6)四、SPRING使用约定 (7)1.所有业务逻辑BEAN都配置在相关的APPLICATION C ONTEXT-SERVICE*.XML中 (7)2.所有STRUTS的ACTION都配置在相关的APPLICATION C ONTEXT-ACTION*.XML中 (7)3.所有持久层D AO都配置在APPLICATION C ONTEXT-DAO.XML中 (7)4.所有公共业务类都配置在APPLICATION C ONTEXT-COMMON.XML中 (7)5.事务声明使用A NNOTATION在相关实现类的方法名上配置,不应配置在接口内 (7)6.项目中事务管理必须写在业务逻辑层或者持久层中 (7)7.事务管理须使用S PRING的A NNOTATION来管理 (7)五、注释使用约定 (7)1.类中的开头注释 (7)2.XML中的注释 (8)3.P ROPERTY FILE中的注释 (8)4.JSP标签定义注释 (8)六、JSP页面约定 (9)1.\WEB-INF\JSP\COMMON下存放公共的JSP页面 (9)2.所有涉及业务操作的JSP页面均应存在\WEB-INF\JSP下的相应目录下 (9)3.JSP中使用的TAG定义规范 (9)4.必须使用XHMTL的DTD规范 (9)5.每个JSP都要有具体的TITLE值 (10)6.每个页面都应加入的META信息 (10)7.每个JSP的<BODY>上都必须加入该JSP的名称注释 (10)8.CSS统一管理 (10)9.JSP页面必须使用CONTEXT P ATH来控制URL根目录 (10)10.FORM的METHOD属性使用 (10)11.页面中的变量引用应尽量使用EL表达式和标签来表示 (10)12.下拉框开发的规范统一 (10)13.关于操作确认提示的规范 (11)七、JAVASCRIPT开发使用约定 (11)1.所有的J AVASCRIPT公共库都放在\COMMON\JS目录下 (11)2.所有表单验证方法都必须写在FORM的ONSUBMIT事件上 (11)3.必须熟悉COMMON.JS下的所有方法 (11)4.页面的ONLOAD方法应使用J Q UERY的$(FUNCTION(){...});替代 (11)5.熟悉J Q UERY的API (11)八、编码格式约定 (12)7.类的属性与属性,方法与方法之间都应空行隔开,以便阅读 (12)8.在方法名与其参数列表之前的左括号"("间不要有空格 (12)9.左大括号"{"位于声明语句同行的末尾 (12)10.右大括号"}"另起一行,与相应的声明语句对齐 (12)11.IF-ELSE语句应该具有如下格式 (12)12.所有JAVA/J AVA S CRIPT代码应以{}为单位层层缩进,以提高代码可读性 (12)九、包使用约定 (12).GOLDPALM.TOUR.ACTION; (12).GOLDPALM.TOUR.BEAN; (12)MON; (12).GOLDPALM.TOUR.DAO; (12).GOLDPALM.TOUR.DWR; (13).GOLDPALM.TOUR.EXCEPTION; (13).GOLDPALM.TOUR.INTERCEPTOR; (13).GOLDPALM.TOUR.JSP; (13).GOLDPALM.TOUR.RESOURCE; (13).GOLDPALM.TOUR.SERVICE; (13).GOLDPALM.TOUR.TEST; (13).GOLDPALM.TOUR.WS; (13)十、DAO以及持久层使用约定 (13)1.所有D AO都应继承COM.GOLDPALM.TOUR.HIBERNATE.B ASE D AO S UPPORT类 (13)2.必须熟知B ASE D AO S UPPORT中的所有PROTECTED方法及其使用方法 (13)3.数据层D AO方法命名约定 (13)4.防止SQL注入的安全性问题 (13)1)使用预编译PrePareStatement的方式提交语句 (13)5.所有的数据库查询操作语句都应使用拼接方式来组合查询 (14)十一、关于版本控制使用的约定 (15)1.提交遇到红色版本冲突时的操作 (15)2.完整提交代码 (15)3.非必要性不允许上传的文件 (15)附录:一、命名约定1.源代码文件中的几个基本包1)com.goldpalm.tour.action;2)com.goldpalm.tour.bean;3)mon;4)com.goldpalm.tour.dao;5)com.goldpalm.tour.dwr;6)com.goldpalm.tour.exception;7)com.goldpalm.tour.hibernate;8)com.goldpalm.tour.interceptor;9)com.goldpalm.tour.jsp;10)com.goldpalm.tour.resource11)com.goldpalm.tour.service;12)com.goldpalm.tour.test;13)com.goldpalm.tour.ws;2.所有包名均用小写字母来命名包中的class均使用帕斯卡命名法每一个单词的第一个字母都大写。
类名应该尽量简单并且是描述性的,不应该使用缩写,除非该缩写使用非常广泛,例如URL、HTML、ID。
一般按照动宾结构来命名,例如:AssociateForm.java, PrintHTML.java(缩写单词需全部大写,以区别于非缩写单词), AssociateDao.java, Associate.java, UserSession.java3.类中的变量应该使用骆驼命名法(注:JavaBean的属性尽量全部小写,这是为了方便在jsp中使用EL的时候不需要考虑大小写的问题)4.类中的方法命名同变量。
5.Struts的命名1)Action类命名必须是以Action结尾的命名方式Action的path命名应取类名中不包含结尾Action的部分如:StateOptionsAction的访问路径为stateOptions6.Struts的跳转页JSP命名应与请求路径相同例:访问/memberAdd.action时,跳转页JSP的命名应为memberAdd.jsp二、Struts使用以及类使用约定1.在整个struts2 famework中的一般流程如下:2.关于PO(持久对象Persistent Object)凡是基本类型的属性都必须使用相关的包装类来声明并且全部都要实现序列化接口例如:private int id → private Integer idprivate double money → private Double money3.所有action类都应该继承mon.action中的相关父BaseAction类1)mon.action.BaseAction4.Action主要负责控制器任务判断在什么情况下调用哪个business logic。
并且负责页面的条件转发。
除条件判断和页面转发的商务逻辑放在Service中。
直接存取数据库的动作放在Data Access Object 中。
另为了统一规范以及方便权限参数控制,添加一下Action使用规范:一个Action请求方法中只允许使用一个参数名来作为判断操作行为的参数。
绝不允许一个Action使用一个以上的参数来判断多种操作行为。
例如:XlAction中使用doType=1执行查询列表,doType=2执行记录更新,doType=3执行记录删除,那么这个Action就不允许再使用别的参数来判断行为条件,只能使用doType来判断他所有的操作行为。
5.关于不同子模块调用同一个Action的情况此时,不同模块不得共享同一个配置,必须为相关子模块单独配置path,以免URI泻露。
6.关于Struts的forward配置该配置中,post表单的提交结果页跳转必须使用重定向redirect(redirectAction),不得使用默认的forward配置,以免用户刷新页面导致表单重复提交出错。
例如:1.用户从列表中删除一条记录后,重新跳转回列表页,此时必须使用重定向跳转到列表页,以免用户刷新后重复提交删除操作导致异常。
2.用户登录后跳转到首页,应该使用重定向,以免用户刷新后,重复提交登陆表单,导致提交失效验证码而产生异常。
7.方法类中的参数设定在定义方法参数时,除非参数本身需要用到数组或者集合类型,否则不允许将多个参数合并至一个数组或集合传递,且必须分开并注释每个参数的用意。
三、自定义异常类使用约定1.必须继承com.goldpalm.tour.exception.GoldpalmException 异常类2.必须重写默认构造方法以及带String参数的构造方法3.默认构造方法必须有一个默认的异常抛出说明当自定义异常的默认异常说明不能满足当前异常的条件是,必须使用带String的构造方法说明该异常例:package com.goldpalm.tour.exception;/*** 支付异常类*/public class PayOrderException extends GoldpalmException {private static final long serialVersionUID = -2727607219533766025L;public PayOrderException(String message){super(message);}public PayOrderException(){super("支付出错!");}}使用时如下:1)throw new PayOrderException();2)throw new PayOrderException("支付订单丢失!请拨打热线咨询!");四、spring使用约定1.所有业务逻辑bean都配置在相关的applicationContext-service*.xml中2.所有struts的action都配置在相关的applicationContext-action*.xml中3.所有持久层Dao都配置在applicationContext-dao.xml中4.所有公共业务类都配置在applicationContext-common.xml中如DWR,Mail Service等5.事务声明使用Annotation在相关实现类的方法名上配置,不应配置在接口内6.项目中事务管理必须写在业务逻辑层或者持久层中7.事务管理须使用Spring的Annotation来管理五、注释使用约定1.类中的开头注释类似如下:/*** Form bean for a Struts application.* Users may access 5 fields on this form:* @author tom*/在类中的方法注释,类似如下:(1)/*** Get AssociateID* @return String* @author tom*/(2)/*** Set AssociateID* @param <code>String</code>* @author tom*/(3)/**get associate info from Table AssociateInfo for searching in Module Query * @param SearchAssociateForm* @return Collection* @author tom*/public Collection getAssociateInfo(SearchAssociateForm form) {}(4)注释所有的调试代码,类似://System.out.println("errors....");或/*System.out.println("errors....");*/不要采用/** System.out.println("errors....");*/2.XML中的注释类似如下:<!—about what business by author-->3.Property file中的注释类似:#about what by author4.JSP标签定义注释如下:<!-- HTML字符串处理过滤器,WebFilter类的标签形式 --><tag><name>filter</name><tag-class>com.goldpalm.tour.jsp.tag.WebFilterTag</tag-class><description>HTML字符串处理过滤器,WebFilter类的标签形式</description> <attribute><name>str</name><required>true</required><rtexprvalue>true</rtexprvalue><description><![CDATA[<b>String:</b>需要处理的字符串*]]></description></attribute><attribute><name>type</name><required>false</required><rtexprvalue>true</rtexprvalue><description><![CDATA[<b>String:</b>需要过滤的方式<ul><li>html:转换为HTML编码(默认)<li>link:将带有[a]的内容转换为超链接代码<li>cut :字符串截断<li>form:转换为适合表单使用的HTML编码</ul>]]></description></attribute><attribute><name>length</name><required>false</required><rtexprvalue>true</rtexprvalue><description><![CDATA[<b>int:</b>字符串截断长度,type为cut时必须的参数]]></description></attribute></tag>如图:六、JSP页面约定1.\WEB-INF\jsp\common下存放公共的jsp页面1)若页面中需要使用标签,应该include其中的taglibs.jsp页面。