该博客已经停止更新,新博客点击此处:DevWiki的博客
本文转自Liter’s Blog
1.空指针异常
第一就要说这个,必须的,避免了它,大概意味着避免80、90%的错误吧,对方法的调用不进行空指针判断而造成针异常(原则是千万不要想当然认为一个对象就不会空),举个简单例子就是equals操作时没有将常量放在equals操作符的左边(字符串变量与常量比较时,先写常量可以避免空指针异常)。记得有危险的地方要么if判断要么try catch。
2.命名与注释
方法和变量命名随意而不规范,没有类注释,方法注释或者注释不规范,代码修改后,不同步修改注释,注释与代码不符。
3.数据类重载
数据类不重载toString()方法,log打印时会对信息展示有所帮助。(说明:编程规范要求‘所有的数据类必须重载toString()方法,返回该类有意义的内容’)。
4.重量级资源释放
数据库操作,IO操作的资源没有及时释放,释放顺序不正确,或者使用没有必要的预处理,数据库操作,IO操作等需要使用结束close()的对象必须在try-catch-finally的finally中close()。
5.无视循环体效率
循环体内包含了大量没有必要在循环中处理的语句,循环体内循环获取数据库连接,垂体内进行不必要的try-catch操作,(说明:编程规范中建议不要在循环体内调用同步方法和使用try-catch块)。
6.小问题大伤害
不对数组下标作范围校验;用“==”比较两个字符串内容相等;对list做foreach轮回时,循环代码中修改list的结构。
7.异常处理
字符串转化为数字丰数据库时没有做异常处理;捕捉异常后没有在打印异常栈。
8.日志
没有打印异常栈消息,日志没有定位,没有实际作用;日志打印乱糟糟或者无意义;日志和实际情形不一致。
9. 万恶的魔鬼字符,魔鬼数字。
10. 可复用性低
差不多的功能,到处都是冗杂的看似不同的代码(实际上很多可以抽离复用)。
* 建议1:码块/常量/资源可以集中公用的一定共用,即使共用逻辑复杂一点(防止逻辑太过复杂)也值得,修改起来很轻松,修改一种,到处有效。
* 建议2:充分利用继承、多态、封装等面向对象机制来提高可复用性
11.可读性不高:
- a 代码不分组,不合理使用空行,相似作用的函数没有聚集在一块;
- b 逻辑嵌套不优化,嵌套if else层级过多;
- c 代码与数据耦合(常量或者SQL语句和逻辑耦合);
(建议:设计从简,遵循KIS原则;胆大兼顾心细,平衡稳定性和重构之间的矛盾,使代码以至架构和模块越来越合理)
12. 编程思想
模块分离
举个小例子,有不少同学在Activity里做了很多事,甚至做了DAO、网络操作、数据解析,这不是很合理的,导致一个UI和逻辑之间的‘门面’挂载了过多的伤不起的‘难以承受之重’,阅读困难,逻辑庞大。(建议模块和代码遵循MVC模式,建议View视图、控制相关(内存管理、核心逻辑),数据相关(文件操作、数据库操作、网络操作、数据组装与解析、数据模型)各分一个相对独立大、小模块,模块内分层级架构(积极合理使用继承与实现等面向对象机制))。
单一职责
有的同学写类啥都可以干,管得了内存,控得住文件,做得了解析,搞得了组装,上得了天堂,下得了厨房。这个是模块分离的基础。
接口隔离
举个例子一个水果类在这里是卖水果功能,在那里却还可以买水果,这样是不太合理的,一个类对另一个类的依赖性建立在最小接口之上。一个接口一个角色,一种客户一种接口。