Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >​CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

​CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战

原创
作者头像
腾讯云 CODING
发布于 2020-12-07 12:20:58
发布于 2020-12-07 12:20:58
9700
举报
文章被收录于专栏:CODING DevOpsCODING DevOps

11 月 22 日,由 CODING 主办的 DevOps 技术沙龙系列「质量」专场在上海圆满结束。在活动现场,四位来自腾讯等知名企业的技术大咖们分享了研发质量与效能的实战经验,与观众们共同探讨如何采取有效手段以保证和提高软件质量。

本期沙龙回顾为大家带来的,是来自腾讯云 CODING 布道师杨周的议题——《DevOps 代码质量实战》

问题:人越来越多,代码越来越乱

随着团队成员增多,每个人在缩进、换行、空格以及大小写方面有不同的习惯,导致代码越来越乱。代码风格问题尚且不致命,更严重的是这些问题:

  • Hard code:在代码中书写各种环境配置、链接、密钥,导致安全风险
  • 魔法数字(Magic Number):难以理解和维护
  • 代码行数过多:难以维护,违反面向对象的 SOLID 原则

不少业界大厂公布了代码规范,推荐大家直接采用,因为自己发明规范往往不够全面,很难服众。

代码规范不只是缩进换行问题,通过强制约束圈复杂度、文件行数和方法行数,可促使大家按照面向对象的方式设计。

如何强制执行代码规范

有了代码规范,但怎么落地?是很多团队面临的问题。Lint 程序用来检查代码规范,各个语言(比如 KotlinJava、PHP)都有自己的规范和 Lint。

自动检查代码规范有三个时机:

  • IDE:最实时方便的,但需要所有人进行配置、某些 IDE 可能不支持
  • Git commit Hook:提交时,会调用命令行工具强制检查,优点是非常及时,然而存在可被删除的风险
  • 服务端:在 Git push 之后,在服务端进行检查,很可靠,但缺点是不够实时 因此,建议同时使用这三种方式。

代码检查之后,如何处理?老项目有成千上万处不规范,很显然不能一次清理干净,让所有人停下老项目去清理老代码并不现实,而且一次改动太多文件的风险也很高。因此建议使用增量检查,尤其是 Java 增量检查方案比较复杂,详情可识别下图二维码阅读 CODING 文档

服务端检查:建议使用持续集成(持续不断地把代码集成到主干,实现质量内建)。流程为:锁定 Git 主干,所有人开发功能拉取小分支,小分支提交后触发持续集成进行代码规范检查,通过之后再通知同事进行代码评审,通过这套流程来提高代码质量。CODING 持续集成兼容 Jenkins,图形化界面易上手,如果项目已经在用 Jenkins 可平滑迁移。

代码整洁了,但结果正确吗?

很多项目到最后面临的困境——没有人敢改老代码。比如开发人员会把已有函数如get() 复制一份再修改,变成了 get1()、get2(),这种做法导致项目逐渐溃烂。根源在于没有人知道修改老代码会不会导致其他地方调用出错。

在开发和测试分离的团队架构中,一个负责任的开发者在写了代码之后要自测,然后提测给测试人员。但是后期大家逐渐会变得不耐烦,从自测 10 种情况到 5 种情况,再到只测一种,最后到完全不自测直接提测,所有的压力都慢慢转移到了测试人员身上。负责任的开发逐渐变成不负责任的开发,问题还是出在机制上。

国外十几年前就开始这个方案:测试人员转岗学编程开发,仅保留少部分的人工测试。开发人员自己写测试代码,测试覆盖率不达标(比如 80%)则禁止合并。

开发人员如何对自己的代码有信心?不是靠聪明才智,因为人总会百密一疏,即使顶尖的程序员也可能会犯最初级的问题,因此自己写测试代码才是最可靠的方案,测试代码覆盖了多种边界情况,即使其他人来改写代码也无需担心挂掉。

最晚什么时候开始自动化测试?

自动化测试很好,但是也面临困境:业务太忙,没有时间写测试代码。

从个人职业发展的角度,把手动操作 Postman 自测的时间用来写自动化测试代码,这样一来,自己的水平得到了提高,后续改代码的时候重测时间也得到了节省,不再是一直堆业务代码,难以成长。

以前中国的大公司项目质量普遍十分糟糕,因为前 20 年是 2C 的红利期,大家在快速抢占市场,但现在到了守地盘的时候,这两年大公司开始重视代码质量问题,建议大家为这个机遇早做准备。

从公司角度,主要看时机。比如 2C 项目逐渐成熟,用户量变大,线上的故障损失已经大于多招开发人员的成本,或者随着项目功能逐渐增加,回归测试时间越来越长,如果一个网站一天上线多次,一天把整个网站所有功能测过来是不实际的,因此自动化测试才能保障持续的高上线频率。而 ToB 项目初期出现了严重 bug 可能就要赔偿客户,因此初期就需要自动化测试。

代码质量评级标准:从下图中可以看到,“优”级别的代码质量标准圈复杂度最多允许 5,类行数不能超过 50,函数行数不能超过 10,测试覆盖率需达到 90%。CODING的合作伙伴优普丰提供了 CSD 认证培训,能够帮助开发者们达到相应的标准,可识别二维码了解详情。

那么本次的分享就到这里,大家可以前往 B 站观看演讲视频并获取完整 PPT,或者前往 CODING 了解更多。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DevOps 代码质量实战(PHP 版)
查看完整直播回放:https://cloud.tencent.com/edu/learning/live-2857
可可爱爱没有脑袋
2020/10/16
6920
​CODING DevOps 代码质量实战系列第二课: PHP 版
连续创业者、DIY/Linux 玩家、知乎小 V,曾在创新工场、百度担任后端开发。十余年一线研发和带队经验,经历了 ToB、ToC、O2O、国内、出海各种项目,见证了云计算时代的诞生,擅长研发最佳实践:Code Review、DevOps、Git Workflow、敏捷开发、架构、极客办公硬件。
腾讯云 CODING
2020/09/03
4990
​CODING DevOps 代码质量实战系列第二课: PHP 版
DevOps 代码质量实战(Java 版)
查看完整直播回放:https://cloud.tencent.com/edu/learning/live-2859
可可爱爱没有脑袋
2020/10/16
8700
直播回顾 | DevOps 代码质量实战第三课
关注腾讯云大学,了解行业最新技术动态 戳【阅读原文】观看完整课程回顾 讲 师 介 绍  连续创业者、DIY/Linux 玩家、知乎小 V,曾在创新工场、百度担任后端开发。十余年一线研发和带队经验,经历了 ToB、ToC、O2O、国内、出海各种项目,见证了云计算时代的诞生,擅长研发最佳实践:Code Review、DevOps、Git Workflow、敏捷开发、架构、极客办公硬件。  Java 老项目常见质量问题 问题一:把 Jar 包提交到了代码库 Jar 包等二进制文件无法进行文本对比,体
腾讯产业互联网学堂1
2023/05/29
1750
直播回顾 | DevOps 代码质量实战第三课
CODING DevOps 代码质量实战系列第三课:Java 版
连续创业者、DIY/Linux 玩家、知乎小 V,曾在创新工场、百度担任后端开发。十余年一线研发和带队经验,经历了 ToB、ToC、O2O、国内、出海各种项目,见证了云计算时代的诞生,擅长研发最佳实践:Code Review、DevOps、Git Workflow、敏捷开发、架构、极客办公硬件。
腾讯云 CODING
2020/08/26
6070
CODING DevOps 代码质量实战系列第三课:Java 版
DevOps 代码质量实战:代码规范与 Git Flow
查看完整直播回放:https://cloud.tencent.com/edu/learning/live-2837
可可爱爱没有脑袋
2020/10/16
1.4K0
​CODING DevOps 代码质量实战系列第一课:代码规范与 Git Flow
连续创业者、DIY/Linux 玩家、知乎小 V,曾在创新工场、百度担任后端开发。十余年一线研发和带队经验,经历了 ToB、ToC、O2O、国内、出海各种项目,见证了云计算时代的诞生,擅长研发最佳实践:Code Review、DevOps、Git Workflow、敏捷开发、架构、极客办公硬件。
腾讯云 CODING
2020/08/25
4940
​CODING DevOps 代码质量实战系列第一课:代码规范与 Git Flow
提升 Web 应用的代码质量【干货持续输出】
Web 应用的质量提升,是一个非常有意思的话题。我们明知道有一系列的手段可以提升代码质量,但是限于多种原因,我们并不会去做。在我工作的第一个项目里,由于大家都是年轻人(Junior Consultant),我们实施了一系列的基础措施,来提升应用质量,诸如写测试、追求测试覆盖率、运行预提交脚本等等。
一墨编程学习
2018/10/15
5060
助推数字化转型,农行信贷中台 DevOps 转型实践
信贷中台项目作为农业银行数字化转型重点项目,旨在破除原有信贷产品“竖井式”研发模式,通过抽象和沉淀标准化信贷业务服务,并依托服务共享与复用,快速支撑信贷产品创新,强化横向风险管控制约。
DevOps时代
2020/06/24
1.5K0
​CODING DevOps 代码质量实战系列最后一课,周四发车
随着 ToB(企业服务)的兴起和 ToC(消费互联网)产品进入成熟期,线上故障带来的损失越来越大,代码质量越来越重要,而「质量内建」正是 DevOps 核心理念之一。
腾讯云 CODING
2020/08/12
4370
敏捷软件质量保证的方法与实践
来源:https://www.cnblogs.com/wintersun/p/5297352.html
顾翔
2019/12/11
2.3K0
敏捷软件质量保证的方法与实践
​「DevOps 转型与实践」沙龙回顾第一讲
9 月 19 日,CODING 和中国 DevOps 社区联合举办的深圳第九届 Meetup 在腾讯大厦 2 楼多功能圆满结束。本次沙龙以 「DevOps 转型与实践」 为主题,4 位来自互联网、金融、零售行业的知名世界 500 强企业技术大咖,在现场分享了他们对于 DevOps 转型实践的见解和经验。80 多位观众与讲师们也进行了深入的技术探讨,共同探讨在 DevOps 潮流下,企业可能面临的新机遇和挑战。
腾讯云 CODING
2020/10/09
8210
保证代码质量的工具与方法——细节决定成败
大家好,我是Echo_Wish,今天我们要聊的是一个在开发过程中至关重要的话题:代码质量。高质量的代码不仅能使开发过程更加顺利,减少Bug和故障,还能提高团队的工作效率和产品的维护性。那么,如何保证代码质量呢?下面我将详细介绍几种工具和方法,希望对你有所帮助。
Echo_Wish
2025/03/07
1650
保证代码质量的工具与方法——细节决定成败
敏捷过程中如何保证代码质量
本文目录: 一、为什么要做代码质量分析 二、常见的代码质量分析工具 三、DevOps平台中的代码质量分析 四、DevOps平台中如何为代码质量提供保障 一、为什么要做代码质量分析 在软件开发过程中,当
yuanyi928
2018/04/02
2K0
敏捷过程中如何保证代码质量
​CODING DevOps 代码质量实战系列第二课,相约周三
随着 ToB(企业服务)的兴起和 ToC(消费互联网)产品进入成熟期,线上故障带来的损失越来越大,代码质量越来越重要,而「质量内建」正是 DevOps 核心理念之一。《DevOps 代码质量实战(PHP 版)》 为 CODING DevOps 代码质量实战系列的第二课,同时也是本系列的 PHP 版,杨周老师将以 PHP Laravel 为例,为同学们讲解代码规范、Git workflow、持续集成、代码生成 API 文档、开发 composer 包、单元测试、Docker 等内容。
腾讯云 CODING
2020/08/11
3060
CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线
大家好,今天课程的主要内容为如何从头搭建 DevOps 流水线以及其在研发工作中的意义,最后是 DevOps 流水线实践与敏捷开发的关系的总结。
腾讯云 CODING
2020/05/15
9540
CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线
​CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线
大家好,今天课程的主要内容为如何从头搭建 DevOps 流水线以及其在研发工作中的意义,最后是 DevOps 流水线实践与敏捷开发的关系的总结。
腾讯云 CODING
2020/05/15
9910
​CODING 敏捷实战系列课第四讲:从头搭建持续集成 DevOps 流水线
​CODING DevOps 线下沙龙回顾二:SDK 测试最佳实践
SDK 测试不同于 APP 测试,不仅要站在终端用户角度考虑问题,还需要站在 APP 开发者的角度考虑问题。面对不同的行业需求,如何保证质量固若金汤,这是一条探索未知的赛道。本期推送将为大家带来声网研发效能负责人潘志刚的《SDK 测试最佳实践——打造质量保证的一体化应用平台》,分享一体化应用平台的演变以及如何整合基础能力,保证测试和交付的高效执行,提升质量效能。
腾讯云 CODING
2020/12/24
1.4K0
​CODING DevOps 线下沙龙回顾二:SDK 测试最佳实践
从小白到菜鸟:持续集成说
1.1引言 持续集成的价值是什么?对于开发和测试人员又意味着什么呢? 1.2概念 “持续集成”一词来源与极限编程(Extreme Programming),作为它的12个实践原则之一出现。 ThoughtWorks首席科学家、软件开发领域大事Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味置顶每天可能发生多次集成。每次集成都是通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发
苦叶子
2018/04/09
1.3K0
从小白到菜鸟:持续集成说
浅析敏捷测试及其实践运用
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
4730
浅析敏捷测试及其实践运用
推荐阅读
相关推荐
DevOps 代码质量实战(PHP 版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档