一些最佳实践
来源:互联网 发布:电子游戏机软件 编辑:程序博客网 时间:2024/06/06 00:36
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代替下面的whilefor (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方法,进行简单的参数验证
0 0
- 一些最佳实践
- Scala的一些最佳实践
- Scala的一些最佳实践
- 保障Web安全的一些最佳实践
- CI入门 : 一些建议和最佳实践
- iOS应用设计的一些最佳实践
- Java 程序优化的一些最佳实践
- Java 程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- Java程序优化的一些最佳实践
- HTTP的长连接与短连接
- P2P网络文件共享系统及开发平台调研报告
- Linux配置网关的命令
- JavaScript中的this
- 【原】WebLogic问题收集
- 一些最佳实践
- 重载和重写的区别
- 字符流与字节流的相互转化
- 【转】ETL中用到的一些基本技术概论
- javascript中让你迷惑的知识点集合
- 【原】PaaS, IaaS 和SaaS的区别
- javascript事件机制搞不清楚
- 品味kettle--(一)用eclipse 搭建源码
- JSONObject与JSONArray的使用