- 深切体会到,一段可读性代码对于团队的重要性
- 糟糕的代码会增加设备的资源开销
- 不规范的代码会增加团队间的沟通成本
故在此文章中进行思考与总结
Java
1、尽量少使用状态标志位,对使用到的标志位,一定要说明在各种场景下的作用
- Android应用层,Java主要负责控制程序的逻辑
- 常见的就是定义一个int、boolean标志位,配合if、switch控制流程
- 在程序中总是会看到有些复杂的模块,各种标志位,有些标志位的作用页甚至重合了
- 在情况复杂的时候,标志位之间也可能会冲突,需要组合考虑置位问题
- 多线程也会有影响
- 在理解、设计程序的时候,总是惦记着这些状态位,怪烦的
- 在记录程序状态时,尽量复用已有的标志位
- 对影响程序逻辑走向的标志位进行整理,汇总
- 可以抽象一个Status状态类去管理
- 对于每种状态位都要说清楚各种情况下的作用
- 遇见的坑也要写出来
2、方法参数尽量简洁、准确
我就是想启动一个Activity而已…
- 传递参数的目的在于传递信息,方法内部如果拿到的是一个复杂数据类型,需要转换
- 例如上图的
List<Good> goodList
,其实方法内部只需要集合元素数量 action
和mode
作用重合
- 参数列表尽量简短
- 参数设计尽量准确
3、尽量使用 if-return 代替 if-else 结构
- 使用
if-else
控制逻辑分支时,经常会导致代码不断缩进 - 不写注释,就更难于理解逻辑
- 对程序的理解,就是“至顶向下,逐步细化”的过程
- 对于分支情况的拆分、汇总、处理,有助于理解程序,加强程序健壮性
4、不要对方法进行多次调用,尽量使用变量保存方法返回值
- 方法的执行对应于虚拟机Java栈中栈帧的出栈、入栈等指令
- 多次调用相同方法,多次执行出栈、入栈指令,会造成多余的开销
- 依赖于方法的返回结果,容易造成NullPointer问题
- 使用变量保存方法执行结果
- 对变量执行判空,避免NullPointer问题
5、不要链式调用方法来实现逻辑
- 项目中总是见到这样的链式调用,甚至更长
- 其稳定性是建立在每一个方法的执行结果不为空的情况下
- 其中某一个环节没有做判空处理,就会crash
- 对方法的执行结果,使用包装器类Boolean、Integer来保存,这样可以兼容方法返回为空的情况
- 对方法调用的结果进行判空
6、switch分支需要使用注释
- switch每一条分支都要用注释标明作用
- 包括default分支
XML
1、每个节点都需要使用注释
- 项目中UI复杂的页面XML结构,也许比这还要复杂
- 接手此界面,只有通过配合控件id来理解结构
- 实现、优化UI也要建立在理解透彻当前UI的前提下
- 配合注释,对于控件的分层结构、任务职责就可以快速地梳理、归纳
2、节点Id中可以加入当前文件名的一部分
- 经常有不同组件使用同一id的情况,例如支付页、购物车页面的提交按钮
- 虽然不会有编译问题,但是能规范去写,为什么要偷这么几秒钟的懒呢?
- 控件id中前部分,使用当前文件名的一部分
- 这种方式不适合公共组件