Android 代码质量管理(理论篇)
前言
“任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。”
代码不仅仅是人类和计算机沟通的语言,它也是建立在程序员之间的桥梁,两个程序员在沟通的时候,任何富有表达力的言语都不如直接阅读对方一段代码。
代码也是公司的一笔特殊财富,因为它不可能永远被同一个程序员维护,如果代码的可读性很差的话,很可能导致这笔财富无法传承下来,前功尽弃。
具有良好可读性的代码能让功能的扩展和BUG的修复更顺利,增加新功能、修改某个BUG都需要你首先理解代码。
所以,提高代码质量是很有必要的,本文将介绍个人在实践中认为能够提高代码质量的方法,希望对大家有所帮助。
理想和现实
软件缺陷
世上本没有BUG
随着功能的增加,便有了BUG
老的BUG改了,可能引入新的BUG
事实: 我们的软件,在发布前,其实就已经百病缠身了。
烂代码的伤害
- 1. 不利于其他同事维护和更新
- 2. 维护、时间成本的增加
- 3. 无法传承下去,维护成本比重新开发成本更高。
软件发布后的情形:
0、领导:这次发布的版本BUG太多了,客户天天往我手机打电话,你们在搞什么东西?
1、项目经理:加班、加班、加班,都留下来给我加班 (把地给我扫干净!)
2、程序员:丧失工作热情 (我们一个个都是怀揣着梦想进入公司的,结果待了2年,发现并不是这么美好。
我常听到程序员说:哎,我们的代码就是一坨X。X是一种什么样的状态,你们懂的。
都说写代码是艺术,有人说,我怎么感觉像蓝领,没啥技术含量呢?)
3、结果:频繁跳槽 (其实是被动跳槽,代码不敢维护下去了,随便一个小改动都会引来新的问题……于是从一个火坑跳进了另一个更大的火坑。)
发现、修改和预防烂代码
疑问1:我们如何发现烂代码?
多看网上的大神写的代码,看多了自然就有识别的能力了。
疑问2:烂代码要不要改呢?应该怎么改?
- 但愿客户不要发现……
- 不影响功能,反正用户也看不到,不要改了
- 时间来不及了,我们下个版本再说吧
疑问3:如果烂代码不是先天性的,那是不是可以预防?
没有好的方式去预防。
制约程序员编写高质量代码的因素
1. 对需求和设计的理解不透彻
2. 对软件业务流程不熟悉
3. 没有开发经验,不知道怎样的代码是好的
4. 对开发工具或开发语言不熟悉
5. 缺少监督体系或不重视质量评估
6. 受情绪因素的影响等因素
7. 其它非代码因素也起着关键作用
- 对于一些经验丰富的编程人员,他们是知道怎么写代码是最好的,最有效率的,但是为什么他们写出的代码也很烂呢?—— 破窗效应
好代码的特性
- 可读性
- 可维护性
- 可变更性
- 正确性
可读性
重视开发规范
- 1. 代码整洁、类、变量、方法命名规则
- 2. 代码样式,缩进与换行
- 3. 多写注释
可维护性
- 方法清晰,容易理解
- 函数不要超过100行
- 类不要超过1000行
- 不要硬编码
- 定义常量或配置文件修改常用属性
- 保持代码简洁
- 函数越短小越好
可变更性
- 代码复用,减少冗余。
- 适当的利用23种设计模式
- 多人开发可以采用MVP或者其他开发模式。
- 设计原则
① 单一职责,一个类或者一个方法只做一样事情。
② 不要面向实现编程,要面向接口编程。
③ 抽取封装共同代码,减少代码冗余。
④ 代码尽量做到对修改关闭,对扩展开放。
重构
所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改。
重构并不是重写,重构可以改进程序的内部结构,从而提高代码体的可维护性。
重构的好处:
- 改进代码美观度
- 快捷寻找BUG
- 提高开发速度
- 改进源码可读性
- 增加程序的可扩展性
一般来说有以下三种场景,可以重构:
- 添加功能时重构
- 修补错误时重构
- 复审代码时重构
项目完成后养成重构代码习惯,不仅能减少以后的维护成本,还能对这次项目的经验进行总结。
自身的编程能力也能得到相应的提高。
设计模式
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
其他提高代码质量的方式
- 代码评审
上面说了那么多,只是一些基本的理论,下面是分享一点平时开发中比较实在的东西。
点击打开链接