让开发自动化:持续重构
来源:互联网 发布:java图形化编程工具 编辑:程序博客网 时间:2024/05/29 04:54
重构是公认的改进现有代码的好方法。然而,如何通过一种一致且可重复的方式找到 需要重构的代码呢?本期的 让开发自动化 阐述了如何使用静态分析工具来识别需要重构的代码味道,并举例说明了如何改进坏味道代码。
在过去的几年里,我曾看过很多项目的大量源代码,从精美的设计到像是用胶带绑定到一起的代码。我写过新的代码也维护过其他开发人员的源代码。我喜欢编写新的代码,但也喜欢采用一些现有的代码,以某种方法将其简化或将重复的代码提取到一个公共类中。在我早期的工作生涯中,许多人都认为如果不编写新的代码就不会有好的效率。幸好,在 20 世纪 90 年代末,Martin Fowler 编写了 Refactoring 一书(参见 参考资料),它使得在不改变外部行为的前提下改进现有代码成为可能。
我在 本系列 中所一直推崇的就是效率:如何减少耗时过程的冗余度,更快速地执行它们。在本文的任务中,我一样推崇这个目标,并且 将论述怎样更有效地 执行它们。
关于本系列作为开发人员,我们致力于为用户自动化流程;但许多开发人员疏忽了自动化我们自己的开发流程的机会。为此,我们编写了 让开发自动化 系列文章,专门探讨软件开发流程自动化的实践应用,为您介绍何时 以及如何 成功应用自动化。
重构的一个典型方法是在引入新代码或更改方法时对现有代码做出小小的变动。该技巧面临的挑战在于一个开发团队的开发人员的应用方法不一致,并且很容易错失重构的机会。这也正是我提倡使用静态分析工具识别编码违规的原因所在。有了这些工具,您就能够从总体上了解代码库,并且处于类或方法的级别。幸运的是,在 Java™ 程序设计中,您可以选择的可免费下载的开源静态分析工具很多:CheckStyle、PMD、FindBugs、JavaNCSS、JDepend 等等。
在本文中,您将学习如何:
- 使用 CheckStyle 度量圈复杂度(cyclomatic complexity),并提供诸如 Replace Conditional with Polymorphism 之类的重构,以此来减少条件复杂度代码味道
- 使用 CheckStyle 评估代码重复率,并提供诸如 Pull Up Method 之类的重构,以此来移除重复代码
- 使用 PMD(或 JavaNCSS)计算源代码行,并提供诸如 Extract Method 之类的重构,以此来淡化大类代码味道
- 使用 CheckStyle(或 JDepend)确定一个类的传出耦合度(efferent coupling),并提供诸如 Move Method 之类的重构,以此来除掉过多的导入代码味道
我将使用如下的通用格式来检查每一种代码味道:
本文转自IBM Developerworks中国
请点击此处查看全文
- 让开发自动化:持续重构
- 让开发自动化: 持续重构
- 让开发自动化: 持续反馈
- 让开发自动化: 持续测试
- 让开发自动化持续重构 --使用静态分析工具识别代码味道
- 让开发自动化: 持续测试 (form developerworks)
- 让开发自动化: 持续集成反模式
- 让开发自动化: 持续集成反模式
- 让开发自动化: 选择持续集成服务器
- 让开发自动化:文档化一键通
- 让开发自动化: 文档化一键通
- 让开发自动化: 部署和配置持续集成Apache Continuum(转)
- 让开发自动化: 部署自动化模式
- 让开发自动化 (一) : 部署自动化模式
- Java让开发自动化:自动负载测试
- 让开发自动化: 用 Eclipse 插件提高代码质量
- 让开发自动化: 用 Eclipse 插件提高代码质量
- 让开发自动化: 用 Eclipse 插件提高代码质量
- 警惕E_ALL
- Cisco IOS Cookbook 中文精简版 12-23 隧道和VPN
- Cisco IOS Cookbook 中文精简版 13-23 拨号备份
- Cisco IOS Cookbook 中文精简版 14-23 NTP和时钟
- 规则架构师的角色
- 让开发自动化:持续重构
- 在 IBM WebSphere Process Server V6.1 中使用 ARM 来监视 SCA 调用,第 2 部分
- 用 Hadoop 进行分布式并行编程,第 3 部分
- 使用 Python 进行线程编程
- Cisco IOS Cookbook 中文精简版 16-23 路由器接口
- Cisco IOS Cookbook 中文精简版 17-23 SNMP
- Cisco IOS Cookbook 中文精简版 18-23 日志
- Cisco IOS Cookbook 中文精简版 19-23 访问列表
- Cisco IOS Cookbook 中文精简版 20-23 DHCP