代码质量管理
软件研发的代码质量管理与规范

软件研发的代码质量管理与规范代码质量在软件研发中起着至关重要的作用,它直接影响着软件的可维护性、可扩展性和稳定性。
为了保证软件开发的高质量,代码质量管理与规范成为研发团队必不可少的工作。
本文将从代码质量管理的重要性、代码规范的建立和执行、代码质量评估与监控等方面进行讨论。
## 一、代码质量管理的重要性代码质量管理在软件研发过程中具有重要的意义。
首先,良好的代码质量可以提高软件的可维护性。
在软件的生命周期中,随着需求的不断变化和项目的演进,对软件的维护是必然的。
高质量的代码可以使维护工作更加容易,减少了修改代码时引入新的错误的可能性。
其次,代码质量管理有助于提高软件的可扩展性。
随着软件的使用增加以及用户需求的变化,软件的功能可能需要不断扩展。
如果代码质量低下,扩展时容易引入冗余和混乱的代码,从而导致软件的复杂度增加,影响整个系统的可靠性。
此外,代码质量管理还有助于提高软件的稳定性。
良好的代码质量可以减少潜在的缺陷和漏洞,降低软件出现故障和崩溃的风险,提高软件的可靠性和稳定性。
综上所述,代码质量管理对于软件研发具有重要的意义,它直接关系到软件的可维护性、可扩展性和稳定性。
## 二、代码规范的建立和执行为了保证代码的质量,团队需要建立统一的代码规范,并严格执行。
代码规范是一套关于代码编写、命名规则和结构的准则,通过规范的代码可以统一团队成员之间的代码风格,提高代码的可读性和可维护性。
在建立代码规范时,可以参考一些通用的编码标准,如Google编码规范、Java编码规范等,并结合团队的实际情况进行适当的调整。
代码规范可以包括以下几个方面:### 1. 命名规范良好的命名规范能够使代码更加易读和易理解。
在命名时,应该选择具有描述性的名称,避免使用缩写和单个字母命名。
另外,可以约定一些命名规则,如类名使用大驼峰命名法、方法和变量名使用小驼峰命名法等。
### 2. 代码结构规范代码结构规范可以统一团队成员对于代码文件的组织方式。
代码质量管理:持续改进项目质量的行动计划

代码质量管理:持续改进项目质量的行动计划代码质量是一个软件项目成功的关键因素之一。
为了确保项目顺利进行并达到预期的质量标准,需要进行代码质量管理。
代码质量管理是一个持续改进的过程,需要通过有效的行动计划来不断提升项目的质量水平。
一、代码质量管理的重要性1.1代码质量直接影响项目的稳定性和可靠性,高质量的代码可以减少软件缺陷和故障率,提高用户体验。
1.2代码质量管理可以提高开发团队的工作效率,减少开发过程中的重复工作和不必要的修复bug的时间。
1.3代码质量管理有助于降低项目维护成本,提升代码的可维护性和可扩展性,保证项目的长期发展。
二、代码质量管理的行动计划2.1代码评审:建立代码评审制度,每一段代码都需要经过团队成员的评审,及时发现和修复潜在的问题。
2.2单元测试:开发人员在编写代码的同时需要编写单元测试用例,保证代码的质量和稳定性。
2.3频繁集成:采用持续集成的方式,通过自动化工具实现快速集成和测试,及时发现和解决集成问题。
2.4代码规范:建立统一的代码规范和规则,确保团队成员遵守统一的编码标准,减少代码的混乱和错误。
2.5代码重构:定期进行代码重构,消除代码中的臃肿和冗余,提高代码的可读性和可维护性。
2.6持续学习:鼓励团队成员不断学习最新的技术和方法,保持对代码质量管理的关注和提升。
2.7错误日志:记录和分析项目的错误日志,找出bug的原因和解决方案,避免相同的问题再次发生。
2.8定期回顾:定期对项目进行回顾和总结,及时发现项目中的问题和不足,制定进一步改进的计划。
三、代码质量管理的效果和益处3.1提高项目的稳定性和可靠性,减少软件缺陷和故障率。
3.2提高开发团队的工作效率,减少开发过程中的重复工作和不必要的修复bug的时间。
3.3降低项目维护成本,提升代码的可维护性和可扩展性,保证项目的长期发展。
3.4增强团队的凝聚力和合作精神,建立良好的团队氛围和工作环境。
综上所述,代码质量管理是一个持续改进的过程,需要通过有效的行动计划来不断提升项目的质量水平。
软件工程中的代码质量管理

软件工程中的代码质量管理代码质量是软件开发中至关重要的方面,它直接影响到软件的可维护性、可读性和可扩展性。
因此,对于软件工程师而言,代码质量管理是一项重要的任务。
本文将探讨软件工程中的代码质量管理的重要性、实施方法以及相关工具。
一、代码质量管理的重要性代码质量管理在软件开发过程中扮演着至关重要的角色。
良好的代码质量可以提高软件的可维护性,降低维护成本。
另外,代码质量还可以增强软件的可读性,使开发者更容易理解和修改代码。
此外,良好的代码质量还可以增加软件的可靠性和稳定性,减少潜在的错误和漏洞。
二、代码质量管理的实施方法1. 代码审查代码审查是一种常用的代码质量管理方法。
通过对代码进行审查,可以发现潜在的问题和错误,并及时予以修正。
代码审查应该由经验丰富的开发人员进行,并且应该有一套明确的审查标准和指南。
同时,代码审查还可以促进团队成员之间的交流合作,提高整体开发质量。
2. 单元测试单元测试是一种对代码进行细粒度测试的方法。
通过编写针对代码各个单元的测试用例,可以验证代码的正确性和鲁棒性。
单元测试应该由开发人员自行编写,并配合使用自动化测试工具。
通过频繁执行单元测试,可以及早发现代码中的问题,并保证代码的质量。
3. 静态代码分析静态代码分析是一种静态分析代码质量的方法。
通过自动化工具对代码进行分析,可以检测出代码中的潜在问题,如代码风格不规范、潜在的内存泄漏等。
静态代码分析可以帮助开发人员找出代码中的缺陷,并进行及时修复,从而提高代码质量。
4. 持续集成持续集成是一种通过自动化的持续构建和测试来保证代码质量的方法。
通过使用持续集成工具,可以及时发现代码和构建过程中的问题,并及时进行修复。
持续集成可以帮助团队更好地协作,提高代码的质量和稳定性。
三、代码质量管理的相关工具1. 代码审查工具常用的代码审查工具包括Review Board、Gerrit等。
这些工具提供了方便的代码审查功能,可以帮助开发团队高效地进行代码审查,并记录审查结果。
软件研发的代码质量管理

软件研发的代码质量管理在进行软件研发过程中,代码质量的管理是至关重要的。
高质量的代码能够提高软件的可靠性、可维护性和可扩展性,并且能够减少后期的bug修复和功能改进。
本文将从代码规范、代码复审和自动化测试三个方面来论述软件研发的代码质量管理。
一、代码规范良好的代码规范是保证代码质量的基础。
代码规范定义了代码的命名规则、缩进格式、注释要求等,能够帮助团队成员编写出一致性高、易读易理解的代码。
首先,命名规范。
变量、函数、类等的命名应该具有描述性,并且符合行业通用的命名规则。
例如,变量应该以小写字母开头,类名应该以大写字母开头等。
其次,缩进格式。
良好的缩进格式可以使代码结构清晰,易于理解。
一般而言,推荐使用四个空格进行缩进,而不是制表符。
然后,注释要求。
代码中的注释应该清晰明了,能够帮助他人理解代码的功能和实现逻辑。
注释应该包括函数的作用、输入输出参数的说明等。
通过严格遵守代码规范,可以减少代码的混乱度,提高代码可读性和可维护性。
二、代码复审代码复审是通过团队成员相互之间的检查和评审来提高代码质量的过程。
通过代码复审,可以发现潜在的问题,减少代码中的错误和漏洞。
代码复审应该由具有一定经验和技术水平的工程师来进行,这样能够确保复审的质量和有效性。
复审应该遵循一些常见的复审原则,如以下几点:1. 代码逻辑:检查代码的逻辑是否正确,是否存在潜在的逻辑错误。
2. 可读性:检查代码的可读性,包括命名是否清晰、注释是否充足等。
3. 效率和性能:检查代码是否存在效率和性能上的问题,如是否存在冗余代码、是否存在低效的算法等。
4. 安全性:检查代码是否存在安全隐患,如是否存在SQL注入、跨站脚本等。
5. 可维护性:检查代码是否易于维护和扩展,是否符合团队的编码规范等。
通过代码复审,可以提高代码质量,降低后期维护的成本,缩短软件开发周期。
三、自动化测试自动化测试是通过编写测试用例,使用自动化测试工具对软件进行测试,以确保软件的正常运行和各个功能的正确性。
代码质量管理教程:从入门到精通(一)

代码质量管理是软件开发中非常重要的一个环节,它决定了我们编写的代码的可维护性、扩展性和可读性等方面。
在这篇文章中,我将从入门到精通地介绍代码质量管理的相关知识和技巧。
代码质量管理的基本概念代码质量管理是指通过一系列的规范、工具和流程等手段,对软件代码进行全面的管理和控制,以提高软件开发过程中代码的质量。
它可以帮助开发团队提高开发效率、减少错误、提高软件性能等。
代码质量管理的核心目标是使代码具有良好的可读性、可维护性和可扩展性。
代码规范的制定与遵循代码规范是代码质量管理的基础,它通过统一的编码风格和命名规范等约定,使得团队内的开发人员能够编写出风格一致、易于阅读和理解的代码。
首先,我们可以确定一套适合团队的编码风格规范,这些规范可以包括缩进、命名、注释和代码结构等方面的要求。
例如,我们可以约定使用4个空格作为缩进、采用驼峰命名法、在关键代码处增加注释等。
其次,我们可以借助代码分析工具来检测代码规范的遵循情况。
常用的代码分析工具有Lint、SonarQube等,它们可以帮助我们自动检查代码中的规范问题,并给出相应的建议和警告。
单元测试的重要性及注意事项单元测试是代码质量管理中不可或缺的一环。
它是一种对软件模块、函数或方法进行验证的方法,通过编写测试用例和运行测试代码,来确保代码的正确性和稳定性。
编写高质量的单元测试用例有以下几个要点:首先,测试用例要覆盖尽可能多的代码路径和边界条件,以确保代码在各种情况下都能运行正常;其次,测试用例要尽量独立,避免相互依赖和干扰;最后,测试用例要具备可重复性,即每次运行的结果都应该一致。
除了编写测试用例外,我们还可以借助一些自动化测试工具来提高测试的效率和准确性。
例如,JUnit是一种常用的Java单元测试框架,它提供了丰富的断言和测试注解,能够帮助我们快速编写和执行测试。
代码复审的意义与技巧代码复审是指通过团队内的其他成员对代码进行审核和评审,以发现潜在的问题和改进的空间。
软件工程中的代码质量管理

软件工程中的代码质量管理在软件开发过程中,代码质量是一个至关重要的方面。
优秀的代码质量可以提高软件的可维护性、可测试性和性能效率,从而确保软件项目的成功实施。
因此,软件工程中的代码质量管理是一项不可忽视的任务。
代码质量管理的意义和目标代码质量管理旨在确保软件项目中编写的代码符合预期的标准和要求。
它的主要目标包括:1. 可读性:代码应该易于阅读和理解,具备良好的命名规范、注释和缩进等,以便其他开发人员能够轻松维护和修改代码。
2. 可维护性:代码应该易于维护和扩展,遵循软件工程的最佳实践,使用模块化和面向对象的设计原则,减少代码之间的耦合性。
3. 可测试性:代码应该易于测试,每个功能模块都应该有自己的测试用例,并能够独立运行和验证其正确性。
4. 性能效率:代码应该具备高性能和优化的特点,减少资源占用和运行时间,提高软件的响应速度和用户体验。
代码质量管理的方法和工具为了实现良好的代码质量管理,软件工程师可以采用以下方法和工具:1. 代码审查:通过代码审查,开发团队可以相互检查和评估代码的质量,发现潜在的问题和改进的空间。
代码审查可以通过多种方式进行,例如代码走查、静态代码分析工具等。
2. 单元测试:单元测试是一种针对代码中最小可测试单元的测试方法。
通过编写和运行单元测试用例,开发人员可以验证代码的正确性,并保证代码的可靠性。
3. 集成测试:集成测试是将不同模块或组件的代码集成在一起进行测试的过程。
通过集成测试,可以验证不同模块之间的协同工作和交互,确保整个软件系统的功能和性能达到预期要求。
4. 自动化测试:自动化测试是利用工具和脚本来执行测试用例的过程。
通过自动化测试,可以提高测试的效率和一致性,减少人工测试的工作量。
5. 静态代码分析工具:静态代码分析工具可以帮助开发人员检测和纠正代码中的潜在问题,如代码重复、未使用的变量和不规范的编码风格等。
常见的静态代码分析工具包括PMD、CheckStyle等。
软件研发如何进行代码质量管理

软件研发如何进行代码质量管理在当今信息时代,软件作为数字化时代的核心,其质量直接关系到企业的竞争力和市场口碑。
而保证软件代码质量则成为软件研发过程中重要的一环。
本文将从代码规范制定、代码审查、单元测试和自动化测试等方面探讨软件研发中如何进行代码质量管理。
1. 代码规范制定代码规范是指制定统一的代码格式和命名规范,以保证代码风格的一致性和可读性。
通过良好的代码规范,可以避免因代码风格不统一而产生的潜在问题,提高代码的可维护性和可扩展性。
在制定代码规范时,需要根据具体的编程语言和项目特点制定相应的规范,例如代码缩进、命名规则、注释规则等。
在团队中建立统一的代码规范意识,并借助代码扫描工具对代码进行检查,可以及时发现代码规范违例,提高代码的质量。
2. 代码审查代码审查是指通过一定的流程和标准对代码进行评审,发现潜在的问题并提出改进意见。
代码审查是提高代码质量和团队协作的重要手段之一。
代码审查可以采用不同的形式,如同行审查、过程审查和管理审查等。
在进行代码审查时,应该注重代码的逻辑性、可读性、扩展性和可维护性等方面的评估。
通过团队成员相互审查,可以减少代码中的错误和漏洞,提高代码的质量和稳定性。
3. 单元测试单元测试是指对软件中最小的可测试单元进行测试,以验证代码的正确性和可靠性。
通过单元测试,可以发现代码中的潜在问题,并及时修复,提高代码的质量和鲁棒性。
在进行单元测试时,应该选择合适的测试工具和框架,并编写相应的测试用例。
测试用例应该覆盖各种边界情况和异常情况,以保证代码在各种情况下都能正常运行。
通过持续集成和自动化测试,可以及时自动运行单元测试,并生成测试报告,方便团队及时发现问题并进行修复。
4. 自动化测试自动化测试是指通过编写自动化脚本和测试工具来执行测试用例,以提高测试效率和代码质量。
自动化测试可以减少人工测试的工作量,提高测试的覆盖率和可靠性。
在进行自动化测试时,需要选择合适的自动化测试工具和框架,并编写相应的测试脚本。
如何进行代码质量分析和管理

如何进行代码质量分析和管理代码质量分析和管理是确保软件项目成功的关键步骤之一。
良好的代码质量能够降低软件维护成本,提高系统的可靠性和稳定性,增加开发效率,提高开发团队的工作满意度,能够帮助团队在竞争激烈的市场中立于不败之地。
在本文中,我将介绍如何进行代码质量分析和管理,以及为什么代码质量分析和管理对软件开发团队如此重要。
一、代码质量分析方法1.静态代码分析静态代码分析是一种无需在运行时执行代码的分析方法,通过检查代码本身来寻找潜在的错误和问题。
通常,静态代码分析可以通过使用一些自动化的工具来实现,这些工具能够检测代码中可能存在的错误、不良的编程习惯、潜在的安全漏洞和性能问题等。
常用的静态代码分析工具有SonarQube、Checkstyle、PMD等。
2.动态代码分析动态代码分析是一种在代码运行时监视其行为和性能的方法。
通过动态代码分析,开发团队可以找出代码中的性能瓶颈和内存泄漏等问题。
动态代码分析通常需要在开发、测试和生产环境中运行代码,并监测其行为、收集数据,然后进行分析。
常用的动态代码分析工具有JProfiler、YourKit等。
3.代码审查代码审查是一种通过人工检查和评审代码的方法,以发现和修复潜在的问题。
代码审查可以发现静态代码分析和动态代码分析工具无法检测到的问题,如代码逻辑错误、设计问题、与需求不符等。
代码审查可以通过一对一的代码审查、小组审查、工具辅助的代码审查等形式进行。
4.单元测试单元测试是一种通过编写测试用例对代码进行测试的方法,以确保代码能够按照预期的方式工作。
单元测试可以检查代码的功能正确性,避免由于后续修改而引入的错误。
良好的单元测试覆盖率可以帮助团队更好地理解代码的行为,并保证代码在修改后仍能够正常工作。
常用的单元测试框架有JUnit、TestNG等。
二、代码质量管理1.设定代码质量标准和指标在进行代码质量管理之前,团队需要制定适当的代码质量标准和指标。
标准和指标可以包括代码格式、注释规范、安全漏洞检测、性能指标等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自我介绍
• 6年工作经验,主要从事J2EE系统开发、测试及构建工作。 • 对Web系统开发,自动化测试以及构建技术有较为深刻的理解。 近年来致力于软件质量保证及过
程改进。 • E-mail:tjjhz@
议程
• 理想与现实 • 是谁把代码变烂 • 什么是好的代码 • 提升代码质量的方法和工具 • 代码质量的衡量 • 重构 • 讨论
保持代码简洁
函数的第一规则是要短小,第二条规则是要更短小。 我无法证明这个断言,我给不出任何证实 了小函数更好的研究结果,我能说的是,40年来,我写过各种不同大小的函数,我写过另人憎恶 的长达3000行的厌物,也写过许多100行到300行的函数,我还写过20行到30行的。经过漫长的试 错,经验告诉我,函数就该小。
– 改进代码美观度 – 快捷寻找BUG – 提高开发速度 – 改进源码可读性 – 增加程序的可扩展性
修改代码的两种方法
重构的驱动力
• 软件开发的现实:时间紧,任务重,变化频繁,客户难伺候。 • 有时,为了达到一些目的(商业或非商业),我们不得不在需求没有完全确定的情况下,开始设
计。 • 初始设计不充分或是跟不上需求的变化。 • 编码不符合规范,缺少注释,质量低下。 • 频繁打补丁,维护成本不断升高。
实现2
• 建一个DUCK父类,实现公共方法。 • 各种不同的DUCK继承父类,若实现不同,则覆盖父类中的方法。
– 很多方法在子类中都要重写,效率不高。
策略模式 (Strategy Pattern)
• 什么是设计模式? – 模式不是代码,是历经验证的OO设计经验 – 大多数模式都着眼于软件变化的主题 – 模式不是被发明的,而是被发现的
• 疑问3:如果烂代码不是先天性的,那是不是可以预防?
是谁把代码变烂? *大泥球 (Big Ball of Mud),是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码
制约程序员编写高质量代码的因素
• 对需求和设计的理解不透彻 • 对软件业务流程不熟悉 • 没有开发经验,不知道怎样的代码是好的 • 对开发工具或开发语言不熟悉 • 缺少监督体系或不重视质量评估 • 受情绪因素的影响等因素 • 其它非代码因素也起着关键作用
• STAF Framework
Junit 测试覆盖率
Junit 测试覆盖率
集成看板 – Sonar Apache Tomcat Memo: /dashboard/index/50544?page_id=2
持续集成与每日构建
• 持续集成 – 持续编译 – 持续测试 – 持续整合
破窗理论
破窗效应
好代码的特性
可读性
• 代码整洁、规范 – 变量、方法命名规则 – 代码样式,缩进与换行 – 使用Eclipse的Format – 举例
• 写好注释和文档 – 注释也需要规范 – 自动导出Java Doc (详见Java编程规范)
注释的要求
• 1、文件头标注开发者、功能、开发时间、最后修改时间、修改详情; • 2、方法头标注功能、输出参数、输入参数; • 3、方法体内重要代码及疑难代码行内注释; • 4、if else类代码优先考虑标注,标注在右大括号之后; • 5、数据成员、数据操作分组,两者之间空一行区分; • 6、方法之间空一行; • 8、采用垂直对齐,tab缩进,以保证代码上下整齐; • 9、嵌套(如if else及for)一般不要超过三层;
桌前检查(Desk Check/Self Review)
• 何时:程序通过编译之后,进行动态单元测试之前 (在跑完静态测试之后,因为工具可以帮我们 做掉很多事情。)
• 谁:程序员自己 • 做什么:对源代码进行分析、检验,并补充相关文档,根据《编码规范》编写或调整自己的代码
符合编码规范 • 重点:工具无法覆盖到的问题
样式分离; • 公用js操作归为全局外部js引用,文件内尽量使用匿名方法,达到结构与行为分离
可维护性
• 模块清晰,容易理解 – 函数不要超过100行 – 类不要超过1000行
• 不要硬编码 – 定义常量或配置文件修改常用属性 – Java 5 的枚举类型 – seperator()和pathSeperator()
WEB开发中HTML的格式
• 普遍采用xhtml格式规范,并额外附加 • 除</head>与<body>之间空一行外其余无空行; • 标记垂直对齐加tab缩进,同一行字符过多情况下可将同一级标签换行; • 数据显示使用table,布局使用div,写好全局css样式引用,避免行内书写css,达到结构与
——《代码整洁之道》
可变更性
• 代码复用 • 设计模式
• 单例模式 • 工厂模式 • 策略模式 • 复合模式 • MVC • 设计原则
提升代码质量:途径 + 步骤
单元测试
• 什么是单元测试? • 单元测试是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。 • 目的 发现每个程序模块内部可能存在的差错 • 测试范围 • 模块接口、局部数据结构、边界条件、独立的路径和错误处理
– JUnit – TestNG – CPPUnit
修复BUG的成本
功能/性能测试工具
• IBM Rational Functional Tester • HP Quick Test Pro • Selenium (Open Source)
• IBM Performance Tester • HP WinRunner/LoadRunner 11.00 • Jmeter/Grinder (Open Source)
同行评审(Peer Review)
• 何时:桌前检查之后 • 谁:若干程序员和测试人员、设计人员组成一个会审小组 • 做什么:讲解、阅读、讨论和争议,对程序进行静态分析的过程 • 目的:促进开发人员、测试人员之间的交流,发现源代码中的缺陷
动态单元测试
• 思考: • 我们为什么不爱写单元测试? • 单元测试真的有用吗? • 测多少才算够呢? • 如何写单元测试?
回顾
• 理想与现实 • 是谁把代码变烂 • 什么是好的代码 • 提升代码质量的方法和工具 • 代码质量的衡量 • 重构 • 讨论
推荐资料
• 《高质量C++/C编程指南》 • 《代码简洁之道》 • 《Head First - Java设计模式》
讨论
携手共进,齐创精品工程
Thank You
世界触手可及
代码重构的基本技术
• 双重否定表肯定 – Example1.java
• 分解复杂判断、拆分函数 – Example2.java
• 引入契约式设计 – 对输入和输出进行验证,以确保系统不会出现我们所想象不到的异常和得不到我们想要的结 果。
• 使用多态代替条件判断 (Stock) • 恰当的使用设计模式
你写过、见到过这样代码吗?
主动重构与被动重构 - Make the Change
• 顾客想要一些新功能,他们决定更改现有的做法。 • 必须升级现有版本以支持WIN7,不然用户将无法使用。 • 应对技术改变,我们必须更新代码,以便适用于新的协议。(Wap, Cloud…) • 我们学到了新的设计方法,能够使现有系统变得更好。 • ……
• 什么是策略模式? – 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独 立于使用算法的客户。
设计原则
• 设计原则1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混 在一起。
• 设计原则2:针对接口编程,而不是针对实现编程。 • 设计原则3:多用组合,少用继承。“有一个”可能比“是一个”更好。
代码重构实例 —— Duck
•要求: 编写一个Duck类,根据不同的鸭子类型(Mallard, Redhead, Rubber, Decoy),实现Swim, Display, Fly 和Quack函数
实现1
• 每种DUCK各写一个类,分别实现方法。 – 有大量重复代码,复用率太低。 – 修改费力,需要大量测试。
理想与现实
软件缺陷的引入
• 世上本没有BUG • 随着功能的增加,便有了BUG • 老的BUG改了,可能引入新的BUG • 事实1: 我们的软件,在发布前,其实就已经百病缠身了。
烂代码的伤害
发现、修改和预防烂代码
• 疑问1:我们如何发现烂代码?
• 疑问2:烂代码要不要改呢?应该怎么改? – 但愿客户不要发现…… – 不影响功能,反正用户也看不到,不要改了 – 时间来不及了,我们下个版本再说吧
• 项目透明 • 团队共享 • 构建自动什么情况下代码需要重构? • 重构有哪些好处? • 重构有哪些基本方法? • 如何重构你的代码?
什么是重构?
• 所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改。 • 重构并不是重写,重构可以改进程序的内部结构,从而提高代码体的可维护性。
单元测试
• 测试依据:详细设计
• 执行者:开发人员/白盒测试人员 • 步骤:
– 先静态检查分析 – 再动态运行代码,检查执行结果
静态分析工具
• PMD/FindBugs (Eclipse) • CheckStyle (Eclipse) • DevPartner (支持VS + Eclipse) • 建议:在代码Check-in之前自己先做好静态测试和桌前检查。Check-in就是要先Check再In。