51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3129|回复: 1
打印 上一主题 下一主题

[转贴] 如何减少团队的低质量代码?

[复制链接]
  • TA的每日心情
    无聊
    11 小时前
  • 签到天数: 1052 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-5-14 09:58:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    工作至今我担任过 BAT 的中某家公司核心用户产品的一线研发,硅谷某公司的架构师,目前是某家 toB/toG 创业公司的技术负责人。随着工作经验的积累,我对代码质量的重要性认识的也越来越深。低质量代码除了引发可见的功能性 bug,更可怕的是使得项目难以长期维护,影响系统迭代效率。任何对技术有追求、对业务有责任心的 coder 都希望避免这种情况。
      如何提升代码质量,结合我自己的经验,有以下几个角度可以尝试:
      主动提升团队代码品味和架构意识
      代码是人写的,因此团队人员在主观上对代码设计的追求也是最主要的一点。最理想的情况是团队的人已经足够优秀,写出的代码质量很高。但是现实要面对的情况要复杂得多,团队的人员是会流动的,不同的人代码习惯也不一样,如何在这种情况下保证项目代码的质量,是每个 team leader 的重要工作。
      这方面有许多工作可以做:建立团队代码规范,利用领域驱动设计进行业务重构,要求单元测试提升单测覆盖率等等。然而,投入精力做这些往往对功能的单纯快速发布没有什么帮助,这些非功能性的工作需要 team leader 做好时间规划,有长期、全局意识。
      理解和思考需求
      在面对需求的时候,开发人员要多问问自己:是否充分理解了当前的需求?PM 提出的需求都是合理的吗?是否符合当前业务的核心逻辑?短期内开发某个功能上线是否能保证质量?如何对需求合理估时?在承接需求的时候都需要考虑这些问题,而不是一味地当实现需求的工具人。
      通过静态分析把控代码质量
      除了上述的从主观上提升代码质量,还可以从防御的角度建立代码质量自动化检测流程。大型公司一般都有比较成熟的 DevOps 体系,其中很关键的一步就是代码质量分析。代码质量分析依托的是静态分析技术,通过对程序的结构的执行逻辑进行推理,找出代码规范、安全漏洞、运行时缺陷等质量问题。业界一般用的是采用 SonarQube ,我贴一段介绍大家感受一下:
      SonarQube为静态代码检查工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持Java、C、C++、JavaScripe等等二十几种编程语言的代码质量管理与检测。 通过客户端插件分析源代码,sonar客户端可以采用IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式,并通过各种不同的分析机制对项目源代码进行分析和扫描,并把分析扫描后的结果上传到sonar的数据库,通过sonar web界面对分析结果进行管理可以从七个维度检测代码质量:
      (1)复杂度分布(complexity):代码复杂度过高将难以理解。
      (2) 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方。
      (3) 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况。
      (4) 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范。
      (5) 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读。
      (6) 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug。
      (7) 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度。
      搭建 SonarQube 环境并和 DevOps 集成需要一定的工作量,但是相信我,这是绝对物超所值的。不过SonarQube 虽好但是也有局限,那就是误报率高,听说 Coverity 要好很多,不过没有实际用过。
      另一个问题是是我最近遇到的一个小插曲。目前所在公司的项目是国内的行业软件方案,在做某核心 toG 产品时,项目合作单位对我方提出交付软件需要质量认证的要求,并且要使用自主可控的国产静态分析方案。当时团队用的都是 sonar,担心没有合适的方案,最终影响项目交付。说实话之前搞互联网用的一般都是开源软件,对国产软件的实力没有什么信心,尤其是静态分析这个比较硬核的领域。
      找了几个熟悉这块的朋友聊了一下,了解到还是有不少国产方案的,对比了几个之后最终选了北大的 CoBot,主要选择原因是下面几点:

      · 缺陷检测和 sonar 相比效果要好,尤其是误报率大降,还发现了不少 sonar 的漏报 case
      · 能够和我司当前 DevOps 流程集成,部署成本不高
      · 集成了国内的质量标准集,里面包括我们项目要用的
      · 本地团队技术支持响应速度很快

      缺点也是有的,用户界面不太友好,不过无伤大雅了,该有的信息都用。我司最终用了这个方案顺利过关。
      总结
      以上就是我对代码质量问题的一些经验和思考,希望能够帮助大家。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 21:33 , Processed in 0.060494 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表