转载请保留原文链接: http://dashidan.com/article/java/basic/21.html
清晰的代码结构, 就像读一个优美的文章,赏心悦目.这个正是我们追求的, 代码逻辑的美, 只有程序员懂.
① 写代码前的准备
② 一些建议
- 必要的注释是代码生命力的重要支撑.
- 需要改进的地方, 或者没完成的部分采用//TODO注释.方便查漏补缺.
- 合理的继承关系.
- 功能模块化.
- 清晰合理的目录结构, 根据功能模块分类明确.
- 合理利用成熟的设计模式.
例如:单例模式, 工厂模式, 观察者模式等. - 静态代码检查, 帮你做一些基本的逻辑检查.
例如: Intelij IDEA的findBugs插件, PWD - 效率优化,通过效率检测工具.
例如:jprofile,jmap,jstack等. - 有继承关系的类,能采用子类时,采用子类对象,省去父类强转的过程.
- 合理的log记录,方便debug.
例如: log4j - 清理无效的代码和注释.
- 尽量降低多维集合维度.
例如:二维数组,第二维长度不超过3时, 尽量采用多个一维数组. - 缩小变量作用域.
只有本类调用的方法和变量修饰为private.方法内的变量,用到时创建. - 方法复用.
Intelij IDEA中有个很棒的提示, 如果代码重复, 会在编辑器中提示.可以用这个功能检查重复代码. - 执行运算前判断参数是否合法.
例如:return 的合理应用,不合法return. - 创建工具类, 统一存放static方法,方便管理static方法.
- final的合理应用, 避免数据误操作.
例如:从配置文件读取的变量不需要的时候,设置为final,避免误操作修改. - 集合类操作的封装.
尽量采用泛型和接口来提高代码复用. - 高频次使用变量的临时记录.
例如:同一个方法内多次使用系统时间, 可以采用局部变量记录, 执行时用变量结果不用重复计算, 提高效率. - 降低定长集合的维度, 尽量减少循环嵌套, 降低集合维度.
ArrayList<Item> items = new ArrayList()
// 改为定义3个对象
Item item0;
Item item1;
Item item2;
- 复杂的判断条件拆分
如果一个判断语句太复杂,可以将其中的部分拆出来作为单独的参数.降低表达式复杂度. - 删除魔鬼数,采用常量定义.
public static final int THIS_IS_VALUE = 0;
- 移除不必要的局部变量, 降低无效代码量.
int type = obj.getType();
if(type > 0){
}
// 可以改为
if(obj.getType() > 0){
}
- if情况超过3个时,切换为switch,switch情况小于3个时,切换为if.
- switch语句中,养成case和break对应的习惯,防止少写break,导致bug.
- 整合只调用一次, 并且代码量小于20行的方法到同一个方法中.
- 一个对象持有另一个对象的多个属性时,修改为持有对象,不重新声明变量及赋值.提高效率, 降低内存消耗.
- 互斥的if情况采用if{}else{}的结构,不采用if{} if{}的方式.
- 遍历HashMap采用entrySet替换keySet.
Entry 对象带有value属性,keySet遍历还需要get一次,Entry效率高50%左右.