Java项目开发过程中,由于开发人员的经验、Java代码编写习惯,以及缺乏统一的标准和管理流程,往往导致整个项目的代码质量较差,难于维 护,需要较大的测试投入和周期等问题。这些问题在一个项目组初建、需求和设计均具有不完全可预期性和完备性的全新项目中将尤为突出。可以采用以下步骤来保证和提高整个项目的代 码质量:统一编码规范、代码样式;静态代码分析(staticcodereview);单元测试;持续集成;代码评审和重构 (Review&Refactor)。

步骤一:统一编码规范、代码样式

规范统一的编码会增加项目代码的可读性和可维护性,但实际情况往往是项目组内的Java代码开发人员的编码风格常常各不相同,这可能是由于不同 的经验习惯或者缺乏编码规范方面的学习造成的。这样一来,其他项目成员或者维护人员在阅读项目代码时就需要花费更多的时间来理解代码作者的意图,所以制定 并采取统一的编码规范就显得很重要。编码规范主要应包含以下几个方面:

◆一般规则和格式规范。例如代码缩进、程序块规范、每行最大代码长度等。

◆命名规则。例如包名、类名、变量、方法、接口、参数等命名规范

◆文档规范。例如类文件头声明、类注释、成员变量和方法注释等规范。

◆编程规范。例如异常、并发、多线程等方面的处理方式。

◆其他规范。例如日志格式、属性文件格式,返回值和消息格式。

步骤二:静态代码分析

在完成源代码的开发以后,下面要进行的工作就是审视和测试代码。除了通过运行测试代码来检查功能之外,还能利用一些静态分析工具来快速、直接地 提高代码质量。静态代码分析工具并不需要运行代码,可以直接对Java文件和Class文件进行分析,通过一些检查条件的设置,快速找到代码中的错误和潜 在缺陷。

步骤三:单元测试

模拟对象技术

在实际项目中,开发人员自己的代码往往需要和其他的代码模块或系统进行交互,但在测试的过程中,这些需要被调用的真实对象常常很难被实例化,或 者这些对象在某些情况下无法被用来测试,例如,真实对象的行为无法预测,真实对象的行为难以触发,或者真实对象的运行速度很慢。这时候,就需要使用模拟对 象技术(Mock),利用一个模拟对象来模拟我们的代码所依赖的真实对象,来帮助完成测试,提高测试覆盖率,从而提高代码质量。

测试覆盖率分析

为了衡量单元测试的质量和覆盖的范围,需要对单元测试的代码进行测试覆盖分析。常用的衡量测试覆盖率的指标主要有语句覆盖率、分支覆盖率、路径 覆盖率、条件覆盖率和方法覆盖率等。具体采用哪些指标可以根据项目的实际情况来定,以避免因过高的指标增加了代码开发人员的工作量而影响了项目整体的进 度。

步骤四:持续集成

持续集成(ContinuousIntegration)是利用一系列的工具,方法和规则,做到快速的构建开发代码,自动的测试化,来提高开发 代码的效率和质量。利用自动构建工具,随时都能把提交的代码构建出来,提供一个可以测试使用的版本,让用户和开发人员同时看到相同的功能,尽早的发现问题 和错误,也可以尽快的得到测试人员和用户的反馈。

步骤五:代码评审和重构

代码评审(CodeReview)是Java项目开发过程中的一个重要步骤,代码评审可以帮助发现静态代码分析过程中无法发现的一些问题,例如 代码的编写是否符合编码规范,代码在逻辑上或者功能上是否存在错误,代码在执行效率和性能上是否有需要改进的地方,代码的注释是否完整正确,代码是否存在 冗余和重复。代码评审还可以帮助新进入项目组的成员快速学习和了解项目,促进经验分享,同时也能保证项目成员的良好沟通。代码评审主要包括两种形式,同级 评审(PeerReview)和小组评审(GroupReview)。同级评审主要指项目成员间的互相评审,小组评审是指通过召开评审会议,项目成员一起 对项目代码进行评审。

如何保障项目组写出高质量的代码相关推荐

  1. 如何在面试时写出高质量的代码

    摘要:有些程序员由于平时没有养成良好的编程习惯,在面试时写出的代码质量不高,最终遗憾地与心仪的公司和职位失之交臂.如何在面试时能写出高质量的代码,是很多程序员关心的问题. 程序员在职业生涯中难免要接受 ...

  2. 如何才能写出“高质量”的代码?

    作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想.很多初学者都会存在很多疑问,觉得 ...

  3. 11月9日云栖精选夜读 | 如何才能写出“高质量”的代码?

    作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想.很多初学者都会存在很多疑问,觉得 ...

  4. 写出高质量的代码——“零星”总结(延续3)

    特别是在C++如何使用C C++中使用C的程序库,实现C++和C的混合编程:extern "C" { /* code */ }一定要加在C++的代码文件里才干起作用. //C编译器 ...

  5. 如何用 GitHub Actions 写出高质量的 Python代码?

    这篇博文将与你分享如何在Python项目中搭建起GitHub Actions工作流,以确保你写出的代码既优雅,又符合所有最佳实践,且已经过完备测试. 作者 | Wojciech Krzywiec 译者 ...

  6. 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?

    文章目录 如何评价代码质量的高低? 最常用的评价标准有哪几个? 1. 可维护性(maintainability) 2. 可读性(readability) 3. 可扩展性(extensibility) ...

  7. 如何才能写出高质量代码

    提醒:在发布作品前,请把不需要的内容删掉. 你是否曾经为自己写的代码而感到懊恼?你是否想过如何才能写出高质量代码?那就不要错过这个话题!在这里,我们可以讨论什么是高质量代码,如何写出高质量代码等问题. ...

  8. 如何写出高质量的文章:从战略到战术

    目录 一.背景 1.1 写作背景 最近 CSDN 举办创作之秋和国庆征文活动,作为创作之秋的"创作领航导师",也需要对参与活动的同学进行的指导. 借着这个机会,对 "如何 ...

  9. 小白程序员怎么由量变到质变写出高质量代码

    小白程序员怎么由量变到质变写出高质量代码?很多老程序员从事开发多年,有这样一种感觉,查看一些开源项目,如Spring.Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点: 1.代 ...

  10. 如何利用Citespace和vosviewer既快又好地写出高质量的论文及快速锁定热点和重点文献进行可视化分析?

    基于Citespace和vosviewer文献计量学可视化SCI论文高效写作方法 CiteSpace是什么? 简单来说,它一款通过将国内外文献进行可视化分析来帮助你了解一门学科前世今生的软件. 面对成 ...

最新文章

  1. ERD2005中文版
  2. JIT编译器杂谈#1:JIT编译器的血缘(一)
  3. 【软件开发底层知识修炼】二十三 ABI-应用程序二进制接口三之深入理解函数栈帧的形成与摧毁
  4. 用在WEB开发中实现会话跟踪实现
  5. -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
  6. 在线文档有哪些技术难点
  7. ThickBox学习之一 ThickBox介绍以及单图片显示示例
  8. 使用css弹性盒子模型
  9. 舞台音效控制软件_iSurround(电脑音效调节器) V1.0.0.1 官方版
  10. 如何解决RS485 通讯接口被主站占用的问题
  11. 面料ERP_面料软件_面料管理软件
  12. J-Flash使用方法
  13. tomcat启动报错 exception_access_violation(0x0000005) at pc=0x000000006d9f904
  14. java中的正则表达式_java中的正则表达式
  15. 金耀初教授:进化计算在人工智能领域的发展
  16. 计算机科学技术的广告语,让人动心的十大经典IT广告语
  17. 量子纠缠:万物皆有默契
  18. android 卡片投影渐变,受Duolingo启发的ViewPager卡片效果
  19. 210413赛后总结
  20. 9大论坛、多项AI创新成果,Imagination邀您共聚 AIIA2020人工智能开发者大会

热门文章

  1. 【信号处理】基于高阶统计量特征的通信系统中微弱信号检测附matlab代码
  2. 弹性均质圆环法计算过程_盾构隧道衬砌结构内力计算方法的对比浅析
  3. 《微软System Center 2012 R2私有云部署实战》——第一章 微软私有云概述1.1 大数据...
  4. EastFax传真服务器系统与Email相比有什么优势
  5. 巧用金山网盾对付游戏插件强行锁定主页
  6. wmv数字证( DRM)相关介绍与破解(收集整合)
  7. mysql设计一个网上购物系统_基于PHP和MySQL的网上购物系统设计与实现
  8. watir_使用Watir的非常穷人的Vonage Web服务
  9. 计算机基础知识excel视频教程,郭安定Excel2003全套教程
  10. 初中计算机vb教程视频教程,关于中学信息技术vb的教学