没有合适的资源?快使用搜索试试~ 我知道了~
一堂如何提高代码质量的培训课
4星 · 超过85%的资源 需积分: 10 13 下载量 163 浏览量
2013-08-07
01:04:03
上传
评论
收藏 132KB DOCX 举报
温馨提示
试读
20页
我既不讲Spring,也不讲Hibernate,更不讲Ext,我不讲任何一个具体的技术。我们抛开任何具体的技术,来谈谈如何提高代码质量。如何提高代码质量,相信不仅是在座所有人苦恼的事情,也是所有软件项目苦恼的事情。如何提高代码质量呢,我认为我们首先要理解什么是高质量的代码。
资源推荐
资源详情
资源评论
一堂如何提高代码质量的培训课
我既不讲 Spring,也不讲 Hibernate,更不讲 Ext,我不讲任何一个具体的技术。我们抛开任何
具体的技术,来谈谈如何提高代码质量。如何提高代码质量,相信不仅是在座所有人苦恼的事情,
也是所有软件项目苦恼的事情。如何提高代码质量呢,我认为我们首先要理解什么是高质量的代码。
高质量代码的三要素
我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们的代码要一个都不能少地
达到了这三要素的要求才能算高质量的代码。
1.可读性强
一提到可读性似乎有一些老生常谈的味道,但令人沮丧的是,虽然大家一而再,再而三地强调
可读性,但我们的代码在可读性方面依然做得非常糟糕。由于工作的需要,我常常需要去阅读他人
的代码,维护他人设计的模块。每当我看到大段大段、密密麻麻的代码,而且还没有任何的注释时
常常感慨不已,深深体会到了这项工作的重要。由于分工的需要,我们写的代码难免需要别人去阅
读和维护的。而对于许多程序员来说,他们很少去阅读和维护别人的代码。正因为如此,他们很少
关注代码的可读性,也对如何提高代码的可读性缺乏切身体会。有时即使为代码编写了注释,也常
常是注释语言晦涩难懂形同天书,令阅读者反复斟酌依然不明其意。针对以上问题,我给大家以下
建议:
1)不要编写大段的代码
如果你有阅读他人代码的经验,当你看到别人写的大段大段的代码,而且还不怎么带注释,你
是怎样的感觉,是不是“嗡”地一声头大。各种各样的功能纠缠在一个方法中,各种变量来回调用,
相信任何人多不会认为它是高质量的代码,但却频繁地出现在我们编写的程序了。如果现在你再回
顾自己写过的代码,你会发现,稍微编写一个复杂的功能,几百行的代码就出去了。一些比较好的
办法就是分段。将大段的代码经过整理,分为功能相对独立的一段又一段,并且在每段的前端编写
一段注释。这样的编写,比前面那些杂乱无章的大段代码确实进步了不少,但它们在功能独立性、
可复用性、可维护性方面依然不尽人意。从另一个比较专业的评价标准来说,它没有实现低耦合、
高内聚。我给大家的建议是,将这些相对独立的段落另外封装成一个又一个的函数。
许多大师在自己的经典书籍中,都鼓励我们在编写代码的过程中应当养成不断重构的习惯。我
们在编写代码的过程中常常要编写一些复杂的功能,起初是写在一个类的一个函数中。随着功能的
逐渐展开,我们开始对复杂功能进行归纳整理,整理出了一个又一个的独立功能。这些独立功能有
它与其它功能相互交流的输入输出数据。当我们分析到此处时,我们会非常自然地要将这些功能从
原函数中分离出来,形成一个又一个独立的函数,供原函数调用。在编写这些函数时,我们应当仔
细思考一下,为它们取一个释义名称,并为它们编写注释(后面还将详细讨论这个问题)。另一个
需要思考的问题是,这些函数应当放到什么地方。这些函数可能放在原类中,也可能放到其它相应
职责的类中,其遵循的原则应当是“职责驱动设计”(后面也将详细描述)。
下面是我编写的一个从 XML 文件中读取数据,将其生成工厂的一个类。这个类最主要的一段
程序就是初始化工厂,该功能归纳起来就是三部分功能:用各种方式尝试读取文件、以 DOM 的方
式解析 XML 数据流、生成工厂。而这些功能被我归纳整理后封装在一个不同的函数中,并且为其
取了释义名称和编写了注释:
代码
初始化工厂。根据路径读取 文件,将 文件中的数据装载到工厂中
的路径
!"#$%
& '!() )**+ ,--.!$$%*/0
1 '!(2*-*-+ 3!$$%*/0
4 '!(2*-*-+ *!$$%*/0
5 --6*7"#89%0/
: 0
初始化工厂。根据路径列表依次读取 文件,将 文件中的数据装载到工厂中
-路径列表
& !"#89-$%
1 '!6:/;-*#/<<$%
4 !-89$/
5 0
: --6-/
0
重新初始化工厂,初始化所需的参数,为上一次初始化工厂所用的参数。
& * !$%
1 !--$/
4 0
5
:
采用 ,--* 的方式试图查找一个文件,并调用;*=*"*!$;
*=进行解析
文件的路径
*是否成功
***() )**+ ,--.!"#$%
& *-*--6'-*/
1 %
4 2*-**-*6*7,--.2*-*!>-#*,--!$$/
5 *-*-**!-#**!$$/
: ?"*-6*-*#*?"*!$/
'!-66$%*'-*/0
*"*!-$/
-*--6*/
0!"@AB**$%
#*#!CA7*() )**+ ,--.DC<>*$/
& 0!?)AB**$%
1 #*#!CA7*() )**+ ,--.DC<>*$/
4 0!.-*,(#AB**$%
5 #*#!CA7*() )**+ ,--.DC<>*$/
: 0
*-*--/
0
采用 32 的方式试图查找一个目录中的所有 文件,并调用
;*=*"*!$;*=进行解析
& 文件的路径
1 *是否成功
4
5 ***(2*-*-+ 3!"#$%
&: *-*--6'-*/
& %
& 2*-*.*-*.6*7.2*-*!>-#*,--
!$$/
& *-*.-**!-#**!$$/
& 2*-*89*-6*-*.#*2*-*-!$/
& '!6:/;*-*#/<<$%
&& ?"*-6*-89#*?"*!$/
&1 '!-E6$%
&4 *"*!-$/
&5 -*--6*/
1: 0
1 0
1 0!"@AB**$%
1 #*#!CA7*(2*-*-+ 3DC<>*$/
1 0!?)AB**$%
1 #*#!CA7*(2*-*-+ 3DC<>*$/
1& 0!.-*,(#AB**$%
11 #*#!CA7*(2*-*-+ 3DC<>*$/
14 0
15 *-*--/
4: 0
4
4
4 用 * 的方式试图查找文件,并调用;*=*"*!$;*=解析
4 文件的路径
4 *是否成功
4&
41 ***(2*-*-+ *!"#$%
剩余19页未读,继续阅读
资源评论
- Aurora_4062014-04-15内容挺不错的,看了有收获
- apollostory2014-06-14真的是不错的
caihualin
- 粉丝: 9
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功