1:使用断言控制输入。
使用断言来判断有效的输入,这样能够避免异常的扩散,迅速定位错误和减少BUG出现的几率。
如:
Java代码
1.import org.springframework.util.Assert;
import org.springframework.util.Assert;Java代码
1.private boolean addAttachment(Attachment att) {
2. Assert.notNull(att, "att对象不能为空");
3.}
private boolean addAttachment(Attachment att) {
Assert.notNull(att, "att对象不能为空");
}要学会灵活运用断言,不仅仅是用来断言来判断方法的输入参数是否正确,还可以判断业务逻辑,每次方法调用的输入输出,至于何时使用需要自己根据方法自我判断。
2:只抛出RumtimeException
作为service层,自己不清楚调用方到底是谁,也不知道调用方如何使用自己的接口,那么自己写出的接口最好是抛出RumtimeException,这样调用方能够处理这个异常或者觉得处理这个异常有必要的话,就进行处理。如果使用Exception就得强制那些处理不了的调用方继续向外抛出。抛出RumtimeException的时候需要在注释里申明我抛出了该异常。
Java代码
1.throw new RuntimeException("工作流初始化失败!");
throw new RuntimeException("工作流初始化失败!");
3:在Service层做事务处理
大家都知道Service层一般是用来组合DAO,所以经常出现需要事务处理的地方,笔者建议尽量在service层做事务处理。
因为一般业务逻辑都屏蔽在service层。笔者习惯使用Spring的手动事务。
Java代码
1.new TransactionTemplate(transactionManager).execute(new TransactionCallbackWithoutResult() {
2. protected void doInTransactionWithoutResult(TransactionStatus status) {
3. //调用DAO按照ID删除部门
4. }
5.});
new TransactionTemplate(transactionManager).execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
//调用DAO按照ID删除部门
}
});
4:Service接口的异常处理
以前开发的时候都会向外抛出一个友好的运行时异常,这种异常信息能够直接展现给用户,如“您添加的用户名已经存在”,但是现在考虑到国际化,所以觉得Service的接口应该抛出错误代码,定义一个友好错误代码运行时异常,在程序出现条件错误的时候抛出错误代码。错误代码可以定义一个枚举类来实现。
Java代码
1./**
2. * 错误代码定义
3. *
4. * @author fangtengfei
5. * @date 2010-3-3
6. */
7.public enum ErrorCode {
8. /**
9. * 用户不能重复
10. */
11. User_Not_Repeat,
12. /**
13. * 用户名太长
14. */
15. User_Name_Too_Long
16.}
/**
* 错误代码定义
*
* @author fangtengfei
* @date 2010-3-3
*/
public enum ErrorCode {
/**
* 用户不能重复
*/
User_Not_Repeat,
/**
* 用户名太长
*/
User_Name_Too_Long
}Java代码
1.在Service里抛出:throw new FriendlyCodeRuntimeException(ErrorCode.User_Not_Repeat);
在Service里抛出:throw new FriendlyCodeRuntimeException(ErrorCode.User_Not_Repeat);
5:必须记录日志
大家都知道,记录日志的目的,主要是当程序运行在不同的环境下,使用日志来监控程序的运行,有些异常可能会特定的环境发生,而这种环境不容易被重现,所以此时唯一能定位问题的途径就只有日志。
Service层会被各种调用方使用,特别是对外提供Service,环境更会前差万别,如何迅速并有效的定位错误变得尤其重要,所以必须记录有效的日志。
Java代码
1.logger.error("更新文档出现出错", e);
logger.error("更新文档出现出错", e);
6:写有效的注释
之所以说写有效的注释,是因为有时候,有些方法真的不需要写注释,如addUser,就不要在写注释“添加用户”这样的注释。关键是写有效的注释,注释的作用在于,调用方只看注释而不看代码就能知道如何使用接口,注释应该包括:输入参数的注释,输出参数的注释和异常的注释。特别是List<Map>,Sting[]这样的参数要严格说明,笔者认为Service作为一个核心层,注释必须非常详细。另外直观的方法名也能起到注释的作用。
Java代码
1./**
2.* 批量添加文档的附件
3.*
4.* @param att 附件对象,附件名长度为20,附件大小为10M
5.* @throws FriendlyCodeRuntimeException
6. */
7.private void addAttachment(Attachment... attachment)
/**
* 批量添加文档的附件
*
* @param att 附件对象,附件名长度为20,附件大小为10M
* @throws FriendlyCodeRuntimeException
*/
private void addAttachment(Attachment... attachment)
分享到:
相关推荐
### .NET开发规范详解 #### 一、编程规约 ##### (一) 命名风格 1. **代码命名规范**: - **禁止**使用下划线`_`或美元符号`$`作为命名的起始或结尾字符。 - 反例:`_name`、`__name`、`$Object`、`name_`、`...
本教程旨在为初学者提供一个深入理解XML Web Service开发的基础,帮助他们掌握这一核心技术。 一、XML Web Service基础 XML Web Service的核心在于XML,它是一种通用的数据表示语言,具有自我描述性和平台无关性。...
### 阿里巴巴Java开发规范精要解读 #### 一、编程规约 ##### (一) 命名规约 **强制规定**:所有代码中的命名均不能以下划线`_`或美元符号`$`开始或结束。例如,`_name`、`__name`、`$Object`、`name_`、`name$`、...
Java 后端开发规范是确保代码可读性、可维护性和团队协作的重要准则。以下是根据提供的文件内容提炼出的关键知识点: 1. **命名规范**: - 类名使用 UpperCamelCase 风格,例如 `MarcoPolo`,但特殊情况下如 DO/BO...
JAVA项目开发规范是确保软件质量和团队协作效率的关键因素之一。这份文档详细地阐述了JAVA项目中的各类命名规范、注释规范、项目文件夹组织规范以及排版规范,旨在提升软件的可读性、可重用性、健壮性、可移植性和可...
### Java项目开发规范详解 #### 一、项目开发约定与命名规则 在Java项目开发过程中,遵循一套统一的开发规范对于提升代码质量、增强团队协作效率以及降低维护成本至关重要。以下将详细介绍Java项目开发规范中关于...
Java开发规范是编程实践中的一套准则,旨在提高代码的可读性、可维护性和团队协作效率。本题涉及的Java开发规范主要涵盖命名规范、接口设计、代码格式、注释规则以及类和方法的设计原则。 1. **命名规范**: - ...
### 互联网JAVA开发规范 #### 背景与重要性 在互联网行业中,尤其是在知名的互联网企业内,良好的编码规范不仅能够提升代码的质量和可维护性,还能够减少潜在的bug,进而提高整体项目的稳定性和效率。然而,在实际...
在Android开发中,为了保证项目的整体质量、可读性和可维护性,制定一套统一的开发规范是至关重要的。一个良好的开发规范将涉及到项目结构、代码风格、资源命名等多个方面。本文档将详细解读Android开发中的一些基本...
### VB开发规范手册知识点 #### 一、目的 本手册旨在为VB.NET开发提供一套统一的规范标准,确保代码质量及可维护性。通过明确各项规范,帮助开发人员更好地理解和协作,提高软件产品的整体水平。 #### 二、目录...
### Java Web项目代码开发规范详解 #### 一、引言 随着Java Web项目的不断发展与壮大,维护一套统一、规范的编码标准变得尤为重要。《Java Web项目代码开发规范》旨在为项目开发人员提供一套完整的编码指南,确保...
### Java代码开发规范知识点 #### 标识符命名规范 标识符的命名是编程中的一项基础工作,它遵循一系列的规则和建议,以保证代码的可读性和可维护性。规范的标识符命名应力求统一、达意和简洁。 1. **统一性**: 在...
阿里Java开发规范是一套详尽的编程规范,由阿里巴巴集团技术部于2016年12月首次公开,旨在指导Java开发人员编写高质量、易维护、可读性强的代码。以下是从给定文件中提取的知识点。 命名规约: 1. 编程相关命名不...
在当前迅速发展的软件开发行业中,阿里巴巴集团通过其丰富的技术积累和实践经验,推出了《阿里巴巴Java开发规范手册》以提升开发效率和代码质量。该手册详细规定了Java编程中的命名、格式、OOP原则、集合处理、并发...
《Web应用开发规范》是一份旨在提升Web应用开发质量和效率的重要文档,它涵盖了从文件编码格式到具体编程实践的多个方面。以下是对其中关键知识点的详细解释: 1. **文件编码格式**:在Web开发中,文件编码格式通常...
《Hikvision第三方厂商Web Service对接规范(V5.2)》是海康威视为视频应用二次开发提供的一份详细的技术指南,旨在帮助第三方厂商与海康威视的系统进行无缝集成。本规范主要涉及媒体控制接口,允许外部应用程序通过...
"BOOKSHOP Web Service开发说明" 是一份详细的指导文档,旨在帮助开发者理解和构建基于Web Service的BookShop应用程序。这个项目不仅提供了对学生进行实践教学的机会,也展现了实际开发中的关键步骤和技术。 1. **...
CXF提供全面的工具和API,支持SOAP、REST、WS-*规范(如WS-Security、WS-ReliableMessaging等)以及各种数据绑定技术。此外,CXF还具有很好的扩展性和插件体系,方便开发者根据需求定制服务行为。 ### 5. 学习路径...
【C# Web Service开发详解】 在信息技术领域,C# Web Service是一种基于标准的、平台无关的方式,用于在不同系统之间交换数据和实现功能共享。本教程深入解析了使用C#进行Web Service开发的关键技术和概念,旨在...