代码检视拟定方案(已完成,非代码博文,开发流程相关)

2023-11-19

代码检视拟定方案

为什么要进行代码检视?

  • 提前发现代码逻辑问题
  • 优秀的代码分享、坏味道代码警示
  • 要求别人的同时提高对自己的要求
  • 性能初步检查
  • 抽象组件、函数沉淀、常量抽取、设计模式引入
  • 解决代码审查消耗大量时间精力问题
  • 结对编程,利于双方代码风格的靠拢,业务的互知,岗位的互替,风险的平均
  • 注释的即时更正
  • 可读性优化

代码检视误区和争议

1. 任务重,加班多,赶进度,代码检视不利于快速上线

    以个人开发经验来谈,一个人一天所写的有效核心代码大致在150-200行,一个迭代的代码交接时讲一个
小时也就够了,可以在每天AM 10:00-10:30,PM 2:00-2:30,PM 5:00-5:30这三个时间窗(现在敏捷的主流都
强调部署时间窗,可以和部署时间窗同节拍进行)去找检视人检视代码,150行代码,查阅时间在10分钟之内,指出
issue并讨论或者pk的时间,20分钟足够,碎片化代码检视时间,其实并不会占用很大段时间,除非积累了很多代
码,把一个功能的代码全堆在一起让检视人检视

2. 代码检视太费时间,且大多数都是检视一些不痛不痒的issue,没有技术含量

    我们做代码检视这个动作就是拍散风险,大面积撒网,重点捞鱼,如果没有这个动作,那整个工程的代码将成
为盲区,留存的技术债早晚要还,无非就是组织开发人员定期检视代码,还只能安排到周六周日这种不占用工作日
的时间,并且谁也不能保证这样长时间的审查的力度是否足够,提出来的问题是否能比不痛不痒的issue更高明,
以个人的经验做反思,基本上这种集中长时间的代码审查也是不痛不痒,为了赶时间,可能比碎片化的检视更肤
浅,因为大量开发人员聚集的会议容不得时间纠结一个问题

3. 团队的习惯和流程就是不做代码检视,大家都是这么过来的

    当今告诉发展的社会,最稳定不变的就是改变,要拥抱变化,从个人而言要提升自己,团队也应逐步完善制
度,先举两个例子,ECP的九天平台,和zf的信息化搭建,ECP为什么要舍弃osgi框架,大家之前都是按照osgi框
架开发的,为什么不保持这个习惯呢,互联网公司是为了高并发高可用,水平向扩缩容,避免形成数据孤岛,和各部
门之间的重复功能开发,咱们还有一些客户的要求、技术栈的升级,公司是在拥抱变化的,再看zf的信息化,之
前的办事难,拿着一份资料到十几个部门盖章,跑断腿,现在随着zf信息化的搭建,个人公积金提取,网上办事大
厅,电子报表,加密电子签章,无一不在说明,zf也从指导型机构向服务型机构转变,总之,一切都在变化,我们只
有正确对待变化,才能更加稳定,组织的进步会给员工带来能力提升,员工自我进步,会给组织交付的产物更加可
靠,一旦有一方停步不前,可能就会出现互相不合适的情况

4. 代码检视容易制造内部矛盾

    首先提一个问题:开车容易出现道路安全事故,那我们就不开车了吗?现实世界告诉我们,还是有很多车行驶
在公路上的,如果代码检视是对人不对事,那么即使不是代码检视这项活动,也会在日常沟通和团队协作中产生摩
擦和矛盾,如果只针对代码而言,最底线的解决方案无非也就是按照检视人的建议改,如果改的是错的,那么检视
人也是责任承担的一方,因为下文提出的方案就要带出检视意见和检视人这两个概念,有了检视意见和检视人,无
理要求的提出者多多少少也会先经过对自己担责的思考,不会出现把java代码改为C++代码这种过分的检视意
见,理越辩越明,我们只强调事情的合理性,大家的目标是保持代码高质量,交付成果令客户满意即可,管理者不断
强调向着共同目标去检视,就会极大纠正检视中的歪风邪气,提高团队成员的分析、思考、权衡、归纳、表达,
乃至心理承受力等综合素质

代码检视流程

SVN库代码检视

流程图

Created with Raphaël 2.3.0 提交人本地开发 待检视代码 请求检视人检视代码 通过(是或否?) 代码一次通过(是或否?) 检视人编写检视总结,简单总结该段代码业务 成功提交,触发jenkins构建 CI构建通过(是或否?) CD部署 提交人修正checkStyle、安全漏洞 归档检视意见 检视人提出检视意见 提交人修正代码 yes no yes no yes no

时序图

开发 检视人 检视意见归档文件 SVN仓 jenkins服务器 请求检视代码 检视意见第n条,请修改 loop [代码检视] 所有检视意见已修正 归档检视意见,记录{issue严重级别}{意见内容}{检视人}{检视时间}{被检视文件列表} 已归档 同意提交 提交代码,提交注释附上{RTC单号}{提交内容}{检视人} 成功提交,触发jenkins构建进行CI扫描 构建失败 修改checkStyle、安全漏洞后提交 loop [CI构建] 所有checkStyle、安全漏洞已修正 构建成功,请取包CD 开发 检视人 检视意见归档文件 SVN仓 jenkins服务器

git库代码检视

流程图

Created with Raphaël 2.3.0 提交人本地开发 待检视代码 Git本地提交,触发 jenkins持续集成,进行CI构建 通过(是或否?) 请求检视人检视代码 通过(是或否?) 代码一次通过(是或否?) 检视人编写检视总结,简单总结该段代码业务 gitLab新建合并请求(dev) 通知commiter commiter把合并请求url发到家园小组群,召集各位开发进行检视,提出issue 开发人员修改issue,并对issue作出回复(已修改、CCB评审) issue清0?(是或否?) 由commiter来merge request CCB评审通过?(是或否?) 归档检视意见 检视人提出检视意见 提交人根据检视意见进行修改 开发人员对CI扫描结果评估 修改可行性(是或否?) 提交人修正代码 召集干系人评审 可ignore?(是或否?) jenkins设置屏蔽 yes no yes no yes no yes no yes no yes no yes no

时序图

开发 检视人 GIT仓 jenkins服务器 干系人 检视意见归档文件 commiter 指标未完成的开发或感兴趣者 Git本地提交 触发 jenkins持续集成,进行CI构建 构建失败 CCB评审,是否可屏蔽 给出指导意见 Git本地提交 触发 jenkins持续集成,进行CI构建 loop [CI构建] 构建成功 请求检视代码 检视意见第n条,请修改 其中m(m∈n)条CCB评审,是否可屏蔽 给出指导意见 loop [代码检视] 所有检视意见已修正 归档检视意见,记录{issue严重级别}{意见内容}{检视人}{检视时间}{被检视文件列表} 已归档 同意新建合并入dev分支的请求 new merge request,提交注释附上{RTC单号}{提交内容}{检视人} 通知commiter commiter把合并请求url发到家园小组群,召集各位开发进行检视,提出issue 提出合理issue,以实事求是的态度,认真指出不足,最好附带上证据截图或链接,开发没有义务修改issue提出人都不知道怎么修改的issue 开发对无法修改的issue召集干系人进行CCB评审 指导意见(继续修改、屏蔽) 开发人员修改issue,并对issue作出回复 检查是否修改完毕 通知commiter合入 merge request agree 开发 检视人 GIT仓 jenkins服务器 干系人 检视意见归档文件 commiter 指标未完成的开发或感兴趣者

代码检视试点及方案选取

  • 客户化开发四组
  • 人员:两位开发
  • 干系人:项目经理,技术经理,需求,开发,测试
  • CCB评审频率:当前阶段所有需要评审的问题收集完毕后
  • 选型:SVN库代码检视方案,因当前开发的微服务项目较少,且SVN库检视流程清爽,故适合试点后推行
  • 代码检视时间:每天AM 10:00-10:30,PM 2:00-2:30,PM 5:00-5:30这三个时间窗
  • 修改响应时间:非节假日,建议(24h内),一般(12h内),严重(6h内),致命(3h内)
  • 最晚解决全部可修改问题周期:5*24h内,不可进入下周

代码检视指标

  • 建议 = 0.2
  • 一般 = 1
  • 严重 = 2
  • 致命 = 4
下限 目标 挑战
3Kloc 5Kloc 7Kloc

Git仓方案附加要求:

  • 每人每周提的有效issue不少于三个;
  • issue要写明代码问题所在行数,问题类型,级别,修改人,处理日期可选。
  • 要求代码满足一致性,可读性,简洁性,可定位性,可重用性,健壮性。如果不满足的话,可以从这方面入手提出issue。
  • issue级别有建议,一般,严重,致命。负责人修改完代码之后,通知提出issue的人复检,关闭issue.

注:试点成功后的推广又PMO以周为单位收集检视意见归档文件和每位开发提供的issue截图

代码检视表格

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码检视拟定方案(已完成,非代码博文,开发流程相关) 的相关文章

随机推荐

  • Linux 开发环境搭建与使用——SlickEdit 的安装与配置

    SlickEdit 的介绍 vim 是公认很好用很完美 但是对新手来说 上手毕竟不是很容易 Windows 下程序员很多都很喜欢Source Insight 这个工具来看代码 各种语法高亮看着很舒服 那在 Linux 平台下 有没有媲美 S
  • ICPC-TOOLs resolver滚榜单工具使用指南

    0 引言 上周突然临危受命 学校ACM社团要举办校内迎新赛 想要使用滚榜功能让揭晓结果变得更加刺激 奈何本人不打ACM 一开始连滚榜都不知道 苦笑 jpg 不过还是跌跌撞撞把功能实现了 介于网络上这方面的教程实在是凤毛麟角 我就把自己的经验
  • vscode远程ssh隧道连接linux服务器并配置conda环境调试python过程【保姆级教程】

    引言 为了彻底摆脱无界面不支持调试的xshell vscode是一款强大的神器 通过与远程服务器建立连接 可以做到远程debug和开发环境的搭建 非常好用 前期准备 vscode一枚 远程服务器用户名 IP 密码 1 本地vscode下载拓
  • python随机森林 交叉验证_随机森林算法详解及Python实现

    一 简介 随机森林是一种比较有名的集成学习方法 属于集成学习算法中弱学习器之间不存在依赖的一部分 其因为这个优点可以并行化运行 因此随机森林在一些大赛中往往是首要选择的模型 随机森立中随机是核心 通过随机的选择样本和选择特征 降低了决策树之
  • NDIS网络数据监控程序NDISMonitor(1)-----驱动程序(编译过程与源码讲解)

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 一 编译过程 弄了半天终于编译通过了 看来驱动的开发确实没有应用来得简单啊 由于DDK提供的ndis h有4个 什么时候要调用哪个我确实不
  • 解析几何 曲线与二次曲面 直纹面(2.4)

    一 直纹面 二 单叶双曲面 1 直母线的性质 定理1 单叶双曲面是直纹面 且过单叶双曲面上任1点 恰有2条不同的直母线 定理2 单叶双曲面 S S S上的2条直母线 L 1
  • AIGC专栏2——Stable Diffusion结构解析-以文本生成图像(文生图,txt2img)为例

    AIGC专栏2 Stable Diffusion结构解析 以文本生成图像 文生图 txt2img 为例 学习前言 源码下载地址 网络构建 一 什么是Stable Diffusion SD 二 Stable Diffusion的组成 三 生成
  • 光盘文件导入服务器,web服务器 光盘文件

    web服务器 光盘文件 内容精选 换一换 ISO是一种光盘映像文件 通过特定的压缩方式 将大量的数据文件统一为一个后缀名为iso的映像文件 ISO文件可以理解为从光盘中复制出来的数据文件 所以ISO文件无法直接使用 需要利用一些工具进行解压
  • 封装一个通用的ajax请求

    封装ajax function useajax method url data callback type 创建兼容对象 var xhr if window XMLHttpRequest xhr new XMLHttpRequest els
  • JVM第一讲 JVM双亲委派机制以及打破双亲委派

    类加载器和双亲委派机制 Java里有如下几种类加载器 引导类加载器 负责加载支撑JVM运行的位于JRE的lib目录下的核心类库 比如rt jar charsets jar等 扩展类加载器 负责加载支撑JVM运行的位于JRE的lib目录下的e
  • 对话数据宝董事长汤寒林:数据要素崛起的背后是产业链的爆发

    数字经济再添新概念 数据要素的来到会对行业产生什么影响 数科星球原创 作者丨苑晶 编辑丨十里香 从小众的极客文化再到被众多企业所接纳 信息科技已经历70余年 现在 随着越来越多的企业开始拥抱数据产业之时 数据的有效利用成为企业间备受关注的话
  • 无网络离线环境下搭建Python所需环境

    整理所需要的依赖环境requirment txt 例如 Django 3 2 django apscheduler 0 3 0 django cors headers 3 4 0 django mssql 1 8 django mssql
  • 【Docker仓库】Docker私有仓库Registry开启用户认证

    Docker仓库 Docker私有仓库Registry开启用户认证 一 Docker Registry 介绍 二 本次实践介绍 1 本次实践简介 2 本次环境规划 三 部署docke registry镜像仓库 1 创建registry容器
  • webpack项目中怎么使用swiper轮播图插件的解决方案

    问题 由于webpack项目中需要使用到swiper轮播图插件 直接let swiper require swiper 使用是不行的 解决方案 采用ES6的方式来引入 例如 数据传输过程中数据不时出现丢失的情况 偶尔会丢失一部分数据 APP
  • 蓝桥 最小距离

    问题描述 数轴上有n个数字 求最近的两个数 即min abs x y 输入格式 第一行包含一个整数n 接下来一行 表示n整数 输出格式 一个整数表示最小距离 样例输入 6 7 3 4 11 9 17 样例输出 1 样例说明 取3和4 数据规
  • 耳机使用说明书 jbl ua_JBL的蓝牙耳机怎么样?2020年JBL耳机全系列购买指南(10月)...

    JBL的蓝牙耳机怎么样 2020年JBL耳机全系列购买指南 说实话JBL当年也是风靡全球的高端耳机品牌 从1920年JBL就开始做音频技术 在几十年的研发和发展中 JBL有做的好的 比如他家的音箱品质在全球目前依旧是具有不可替代的地位 当然
  • PAT 乙级 1037 在霍格沃茨找零钱 (C语言)

    题目 如果你是哈利 波特迷 你会知道魔法世界有它自己的货币系统 就如海格告诉哈利的 十七个银西可 Sickle 兑一个加隆 Galleon 二十九个纳特 Knut 兑一个西可 很容易 现在 给定哈利应付的价钱 P 和他实付的钱 A 你的任务
  • vector模拟实现

    个人简介 作者简介 大家好 我是菀枯 支持我 点赞 收藏 留言 格言 不要在低谷沉沦自己 不要在高峰上放弃努力 1 前言 大家在学习C 的时候一定会学到STL 标准模板库 这是C 标准库中最重要的组成部分 它包含了常用的数据结构和算法 今天
  • API架构的选择,RESTful、GraphQL还是gRPC

    文章目录 一 RESTful 1 什么是RESTful 2 RESTful架构的原则 3 RESTful的适用场景 4 RESTful的优点 5 RESTful的缺点 二 GraphQL 1 什么是GraphQL 2 GraphQL的原则
  • 代码检视拟定方案(已完成,非代码博文,开发流程相关)

    代码检视拟定方案 为什么要进行代码检视 提前发现代码逻辑问题 优秀的代码分享 坏味道代码警示 要求别人的同时提高对自己的要求 性能初步检查 抽象组件 函数沉淀 常量抽取 设计模式引入 解决代码审查消耗大量时间精力问题 结对编程 利于双方代码