一些最佳实践

简介: <p>1. 接口参数进行验证</p> <p></p><pre name="code" class="java"> public void test(String s){ if(s == null){ throw new NullPointerException(); } }</pre><br><p>2. 保护性拷贝</p> <p>避免因为测试外参数变更对方法造成影响

1. 接口参数进行验证

	public void test(String s){
		if(s == null){
			throw new NullPointerException();
		}
	}

2. 保护性拷贝

避免因为测试外参数变更对方法造成影响:如下

Date start = new Date(2014, 2, 2);
		Date end = new Date(2014, 3, 1);
		test(start, end);
		end.setMonth(1);
可以这样来实现方法解决这个问题:

	public void test(Date start, Date end){
		Date s = new Date(start.getTime());
		Date e = new Date(end.getTime());
	}

以及对get方法中的返回值使用clone或者new新对象等


3. 返回空的数组或者集合而不是null

4. 局部变量作用于最小化

防止拷贝错误,更好的垃圾回收

List<String> list = new ArrayList<String>();
		// 用for代替下面的while
		for (Iterator<String> i = list.iterator(); i.hasNext();) {
			
		}
		
		Iterator<String> i1 = list.iterator();
		while(i1.hasNext()){
			
		}
5. 尽量使用基本类型,只有在作为key,或者是必须用封装类型的地方采用

		Integer i = null;
		Integer i2 = new Integer(1);
		Integer i3 = new Integer(1);
		System.out.println(i2 == i3);
		System.out.println(i == 0);
出了性能上的损耗外,上面的代码还容易造成错误。

6. 对于可恢复的情况适用受检异常,对于编程错误适用运行时异常

7. 可以适用it.hasNext()这样的状态检测方式或者是返回状态码的方式来减少运行时异常

8. 一些常用的标准异常

IllegalArgumentException   参数不合适的异常

IllegalStateException 调用方法是对象的状态不正确,比如没有这个对象没有初始化

NullPointerException

IndexOutOfBoundsException

UnsupportedOperationException 对象不支持用户请求的方法

ArithmeticException  数学计算的时候出现错误,比如除0了

NumberFormatException 数字格式错误


9. 序列化要加上UID,并且记得在需要的时候修改它,如果不加的话JVM会根据类信息自动算出UID,有可能在很小的变动之后就造成接口不兼容。


10. 序列化有可能被攻击,比如别人直接生成了一个二进制文件,然后被读入就可以进行攻击。为了防止这种攻击,可以使用readObject方法,进行简单的参数验证




相关文章
|
3月前
|
存储 JavaScript 前端开发
基础与最佳实践
【8月更文挑战第30天】
39 5
|
6月前
|
监控 Cloud Native 数据库
【阿里云云原生专栏】性能优化之道:阿里云云原生平台上的监控与调优策略
【5月更文挑战第22天】本文介绍了阿里云云原生平台的监控与调优策略。阿里云提供如CloudMonitor、ARMS和ACK监控等工具,用于基础和应用监控,以及容器监控。调优策略包括资源、代码和架构优化,例如根据监控数据调整资源配置,优化代码性能,和利用微服务、容器化和无服务器化改进架构。示例代码展示了如何进行监控和调优操作,强调实时监控与针对性调优对提升云原生应用性能的重要性。
363 1
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
|
数据处理 C#
【C#编程最佳实践 三】接口使用实践
【C#编程最佳实践 三】接口使用实践
85 0
【C#编程最佳实践 三】接口使用实践
|
IDE Java 程序员
C++开发环境最佳实践
C++开发环境最佳实践
572 0
C++开发环境最佳实践
|
存储 Unix 编译器
C++ 最佳实践 | 1. 工具
C++ 最佳实践 | 1. 工具
413 0
|
消息中间件 存储 弹性计算
阿里云鲍文乐:基于事件的自动化运维最佳实践
运维编排OOS系统:门槛低、规范安全、效率高、易维护、免费。
阿里云鲍文乐:基于事件的自动化运维最佳实践
|
弹性计算 API
DescribeInstanceTypes最佳实践
背景您在阿里云云服务器ECS的选型过程中,可以参考选型最佳实践,其中对比实例性能时,可以调用DescribeInstanceTypes API获取最新的规格性能参数。当前ECS实例规格数量越来越多,为保证查询时可以获得符合条件的所有规格,及避免调用时触发限流,强烈推荐您使用分页查询的方式调用。关于DescribeInstanceTypes API的接口文档可以参考DescribeInstanceT
233 0
|
SQL 测试技术 数据库
最佳实践—如何支持热点更新场景
背景介绍 数据库中更新的模式为lock -&gt; update -&gt; unlock,当对数据库中的同一条记录有大量修改请求时,会造成大量的锁争抢与锁等待。请求量增加会导致TPS下降,延迟飙升。例如,秒杀场景中对于商品库存的扣减。 您可以选择在数据库内核中进行批处理,即对该条记录进行的更新操作使用组提交,更新的模式更改为lock-&gt; group update -&gt; unlock,从而减少锁争抢。结合流水线处理等优化,可以大大提高该场景的TPS,详情可见测试结果。
138 0
|
机器学习/深度学习 分布式计算 NoSQL
阿里云PAI解决方案最佳实践
阿里云PAI解决方案最佳实践 PAI 是阿里云推出的人工智能平台,提供一站式的 机器学习解决方案。本最佳实践利用 PAI 平台结合 阿里云 RDS for MySQL 版、对象存储 OSS 和云数 据库 Redis 版等产品构建一个高效的离线训练+在 线推理的推荐业务系统。
阿里云PAI解决方案最佳实践
下一篇
无影云桌面