Java Code Review清单

来源:互联网 发布:网站源码分享 编辑:程序博客网 时间:2024/04/29 21:33

一、整洁性

清单项目分类使用可以表达实际意图(Intention-Revealing)的名称有意义的名称每一个概念只用一个词有意义的名称使用方案/问题领域名称有意义的名称类应该是比较小的!类函数应该是比较小的!函数只做一件事函数DRY(Don’t Repeat Yourself)原则,(拒绝重复)函数用代码来解释自己的做法(译者注:即代码注释)注释确定应用了代码格式化格式使用异常而不是返回码异常不要返回Null异常

二、安全性

清单项目分类如果不用于继承,使类为final基础避免重复代码基础权限限制:程序应该运行在保证功能正常的最小权限模式下。基础最小化类和成员的可访问性基础注释出安全相关的信息基础系统的输入必须检查是否有效和在允许范围内拒绝服务(Denial of Service)避免对于一些不寻常行为的过分日志拒绝服务(Denial of Service)在任何情况下都释放资源(流,连接等等)拒绝服务(Denial of Service)从异常中清除敏感信息(暴露文件路径,系统内部相关,配置)P私密信息(Confidential Information)不要把高度敏感的信息写到日志私密信息(Confidential Information)考虑把高度敏感的信息在使用后从内存中清除私密信息(Confidential Information)限制包,类,接口,方法和域的可访问性可访问性的扩展(Accessibility Extensibility)限制类和方法的可扩展性(通过使它为final)可访问性的扩展(Accessibility Extensibility)检验输入(有效的数据,大小,范围,边界情况等等)输入检验(Input Validation)把从不可信对象得到的输出作为输入来检验输入检验(Input Validation)为native方法定义包装类(而不是定义native方法为pulibc)输入检验(Input Validation)把从不可信对象得到的输出作为输入来对待可变性使public static域为final(避免调用方(caller)修改它的值)可变性避免暴露敏感类的构造函数对象构造避免安全敏感类的序列化序列化反序列化(Serialization Deserialization)通过序列化来保护敏感数据序列化反序列化(Serialization Deserialization)小心地缓存潜在的特权操作结果序列化反序列化(Serialization Deserialization)只有在需要的时候才使用JNI访问限制

三、代码性能

清单项目分类避免过分的同步并发保持同步区域比较小并发知道string连接的性能情况综合编程避免创建不需要的对象创建和销毁对象

四、综合性

清单项目分类对可以恢复的情况使用已受检异常(checked exceptions),对于程序错误使用运行时异常(runtime exceptions)异常更多地使用标准异常异常不要忽略异常异常检查参数的有效性方法返回空数组或集合,而不是null方法最小化类和成员的可访问性类和接口在pulibc类中,使用访问器方法(accessor methods)(译者注:访问器方法即我们平常用的get/set方法)而不是public域类和接口最小化本地变量的范围综合编程通过接口引用对象综合编程遵循广泛接受的命名规则综合编程避免使用finalizer创建和销毁对象当你重写equals时总是重写hashCode综合编程总是重写toString综合编程使用枚举来代替int常量枚举和注解(Annotations)使用标记接口(marker interface)(译者注:标记接口是一种没有任何行为的接口,实现它只是为了让实现类属于某种类型,如JDK中的Serializable,Cloneable等)来定义类型枚举和注解(Annotations)对共享可变的数据使用同步访问并发使用executors而不是task和thread并发注释中描述线程安全情况并发存在有效的JUnit/JBehave测试用例测试

五、静态代码分析

清单项目分类查看静态代码分析器的报告来进行类的添加和修改静态代码分析

本文由 ImportNew -陈 晓舜 翻译自dzone。转载自http://www.importnew.com/12511.html,谢谢分享!!


0 0