如何阻止软件老化?这里有一些实践可以帮助我们管理软件复杂性,以此来阻止软件老化的进程。 文档可用于记录软件架构、用户需求,还可以用来解释代码决策。在我看来,给软件架构和用户需求编写文档是最重要的,但我不同意用文档来解释代码。 极限编程(Xtreme programming)所建议的两个实践我认为是比较有用的,尤其是在开发可维护的软件。结对编程(Pair programming)和集体所有(Collective Ownership)能够帮助我们在团队里分享好的知识,这样写出的代码肯定质量是比较高的,因为人们通常是根据不同的观点来编写和分析同一个代码库。 其他的实践我想说的就是代码审核,在这篇文章里它也是重中之重。 代码审核代码审核就是一种不断分析代码的行为,旨在保证代码标准,符合用户需求。其方式无非就是手动的、自动的。 手动代码审核 手动代码审核通常是由最资深开发人员分析代码,而这些代码通常是由整个团队完成的,这个评审过程非常类似于评审会议(sprint reviews)。手动评审的好处就是能够在团队里分享技术,增加大家对项目的了解程度。相对的就是比较浪费时间,在分析代码的时候根本没时间去写代码。 自动代码审核 虽然可以自动执行代码审核,但是我觉得即使是那样,也不该忽略手动代码审核的地位,事实上我觉得两个方法是互补的。自动代码审核是一个过滤器可以抓住最初的小错误,节省很多时间。使用自动审核就是可以建立一些指导方针,电脑是可以创建一些简单的指标,这些指标在代码衡量里有显示。 代码衡量代码衡量(Code Metrics)被用来代表不同的软件指标,例如:尺寸大小、复杂性、耦合和内聚。第一个被使用的代码衡量就是六十年代的 Lines Of Code (LOC),用来测量生产力和工作效率。但是使用 LOC 测量不同语言编写的软件的复杂性是不公平的,就像把 Ruby 和 Objective-C 放在一起做比较是不可取的。 随后,就出现了很多有名的代码衡量方式,最为常见的就是1994年提出的CK metrics,还有1995年提出的MOOD metrics。 用来计算代码衡量的工具有很多工具可以自动计算这些衡量,有的是免费的,有的是收费的,有的支持好几种语言,而有的只支持一种语言。 Sonar Sonar 应该是企业用的最多的提取衡量数据的工具,它可以分析超过20种编程语言,并提供合理化的图标帮助理解。Sonar 还可以用在开源项目里,如果想把它用在个人项目里的话,可以安装一个本地版本或者是用一个像 CloudBees 一样的服务。 NDepend NDepend 是一个用来分析.NET 代码的商业工具。可以分析超过 82 个衡量,并且通过不同的图形方式将其视图化。 CodeAnalytics 在我的硕士毕业展示里面,我就是用 CodeAnalytics 从 C# 代码里提取衡量。 写在最后的总结文章里已经展示软件的进化过程,它的危险性,以及如何组织项目老化。通过代码审核可以最大限度的降低软件复杂性所带来的麻烦。通过代码衡量指标来计算并优化代码质量。 尽管代码衡量已经研究了数十年,但是我想很多开发者和公司都知道其为何物,并知道如何使用它们来改善代码质量,使之更加的可维护,提供更可靠的软件。 转自:http://code.csdn.net/news/2821916 |