达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
达内新闻
 当前位置:主页 > 达内新闻 >

代码质量管控都有哪些阶段

时间:2020-05-20  来源:未知  作者:广州达内培训

对于程序员来说,代码质量的优化和性能调优是一个永无止境的工作项目,而今天我们就通过案例分析来了解一下,代码质量管控都有哪些阶段。

代码质量管控都有哪些阶段

我把代码质量管控通常需要经历的四个阶段,称之为“四个现代化”:

规范化-建立代码规范与CodeReview制度

自动化-使用工具自动检查代码质量

流程化-将代码质量检查与代码流动过程绑定

中心化-以团队整体为视角,集中管理代码规范,并实现质量状况透明化

阶段一:规范化

保障代码质量的基础是建立团队的代码规范,通常包括:

风格规范-缩进、换行、大小写等风格问题

实践规范-规避一些常见的隐患,或者针对特定问题的佳实践

业务规范-与业务有关的特殊要求,比如文案中的关键词

团队的代码规范通常以文档的形式存在,供新人们学习。但文档这种形式常见的情况就是新人看过之后就不再回顾了,也很难对实际写代码形成真正的约束。

在规范的基础上,要通过CodeReview将规范落地。CodeReview中大家可以对代码质量问题进行交流,并且相互监督,形成团队重视代码的习惯。

关于CodeReview可以参考另一篇文章:CodeReview体系与团队文化

阶段二:自动化

自动化是指在代码规范的基础上,使用自动化工具进行质量检查,通常包括:

代码规范检查-包括风格规范、实践规范、业务规范

重复率-重复出现的代码区块占比,通常要求在5%以下

复杂度-总行数,模块大小,循环复杂度等

检查覆盖度-经过检查的行数占代码库总行数的比例

自动化质量检查可以覆盖多数常见问题,能够提升开发效率,也可以降低人工CodeReview的成本。

自动化检查工具的规则集与代码规范直接对应。通过编辑器插件,在写代码的时候直接给出检查结果。到这个阶段,团队的代码规范文档已经不再需要陈述各种细节,开发者可以直接通过查看自动化工具的规则集来了解代码规范。

阶段三:流程化

流程化的意思是将自动化代码质量检查和CodeReview与代码流动的过程绑定,从而保证所有上线的代码都经过机器与人工多个环节的检查。

代码流动过程:

执行自动化代码质量检查的时机:

编辑时-使用编辑器插件,实时运行质量检查

构建时-在本地或者开发机的构建脚本中运行质量检查

提交时-利用GitHooks,提交代码或者生成PullRequest时运行质量检查

发布时-在发布脚本中再做一次质量检查,通常与自动化测试放在一起

质量检查与代码流动绑定后的效果:

除了人工的CodeReview之外,各个环节的代码质量检查都是机器自动运行的,不会给开发者带来额外的成本。

阶段四:中心化

当团队规模越来越大,项目越来越多时,代码质量管控就会面临以下问题:

不同项目使用的代码规范不一样

部分项目由于放松要求,没有接入质量检查,或者存在大量未修复的缺陷

无法从团队整体层面上体现各个项目的质量状况对比

为了应对以上问题,需要建设中心化的代码质量管控体系,要点包括:

代码规范统一管理。使用Git或者NPM包管理自动化代码质量检查的规则集,自动安装,不在本地写规则。一个团队、一类项目、一套规则。

使用统一的持续集成服务。质量检查不通过的项目不能上线。

建立代码质量评分制度。让项目与项目之间能够横向对比,项目自身能够纵向对比,并且进行汇总反馈。

总结

在面临业务压力时,人们通常会倾向于通过增加人力来缓解业务压力。但从系统整体的角度来看,人力增加会造成代码质量变差,开发效率下降,从而再度增大业务压力。这种代码质量越来越差的循环,是熵增定律在软件工程领域的生动体现。

为了抑制这种循环,我们需要有意识地投入资源来建设代码质量的管控体系。这个过程分为四个阶段:规范化,自动化,流程化,中心化。每个阶段都有不同关注的要点。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。




上一篇:没有了
下一篇:没有了

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载