Android 代码质量管理(理论篇)

前言

“任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。”

 

 代码不仅仅是人类和计算机沟通的语言,它也是建立在程序员之间的桥梁,两个程序员在沟通的时候,任何富有表达力的言语都不如直接阅读对方一段代码。

代码也是公司的一笔特殊财富,因为它不可能永远被同一个程序员维护,如果代码的可读性很差的话,很可能导致这笔财富无法传承下来,前功尽弃。

具有良好可读性的代码能让功能的扩展和BUG的修复更顺利,增加新功能、修改某个BUG都需要你首先理解代码。

所以,提高代码质量是很有必要的,本文将介绍个人在实践中认为能够提高代码质量的方法,希望对大家有所帮助。

 

 

 

理想和现实

 

 Android 代码质量管理(理论篇)


软件缺陷

 

         Android 代码质量管理(理论篇)

             世上本没有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)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

 

其他提高代码质量的方式

  • 代码评审

 

 上面说了那么多,只是一些基本的理论,下面是分享一点平时开发中比较实在的东西。

点击打开链接