【测开方法论】当老功能代码命名不规范的时候...如何安全增加新功能

简介: 【测开方法论】当老功能代码命名不规范的时候...如何安全增加新功能

 在我们开发一个大型代码项目的时候,总是会遇到下面这种头疼情况:

   小王是一家公司的测试开发人员,领导要求他开发一个可以支持A端自动化测试的测试平台。

   于是小王很快便搞定了这个自动化平台,只是代码中的很多变量,命名都是如下:

   比如

   进入脚本列表的url:/scriptList/

   进入环境变量设置页面的url:/set_A_Detail/

   进入元素库的url:/objects_A/

   项目库表名:DB_Project

   ...

   这种命名乍一看没有什么问题,直到有一天,领导要求小王在这个自动化平台上新增B端的自动化业务。

   小王打开代码一看,傻眼了,因为之前的这些A端代码变量命名并不规范,有的直接用了公共名,有的中间包含A,后缀A... 如果增加了B端业务,那么B端要怎么命名才能不冲突呢?

   小王想过重构更改A端整个代码,把所有变量命名全部规范,不过这样做的代价太大了,bug一定很多,甚至让本来没问题的A端瘫痪;如果B端直接取新名呢?比如项目库表名叫DB_Objects? 到时候别人一看,谁能知道 DB_Project是A端的表,DB_Objects是B端表?;如果全部按照一个规则,就是都增加后缀_B呢?那也看起来怪怪的,难道/set_A_Detail/ 要改为 /set_A_Detail_B/ ? 这显然也是不对的,总之,按照单一的规则已经行不通了。

   事已至此,多说无益,要怪就只能怪一开始的时候,没想到这个平台要承担多端的业务,以为只有A端,于是命名就没有太严格。

   于是,小王苦思冥想终于想到了一个好办法:既然没有条件重构,再考虑到今后可能会有C,D,E等等端业务,那就可以创建一个新功能的命名修改规范即可。

   规范中对各种情况名称做了严格的要求:

   1. 旧名不包含端名的,比如/scriptList/ ,DB_Project ,新功能要全部后缀端名,变为:/scriptList_B/ ,DB_Project_B ,以后只要看到没有后缀的,就可以认定为最早的A端业务代码。

   2. 旧名中包含端名的,比如/set_A_Detail/ ,/objects_A/  ,全部把端名进行更改,位置和大小写不变,变为:/set_B_Detail/ ,/objects_B/  。

   

   这样,在庞大的代码项目开发后,严格按照这个复合规则去改名,直到最终上线都没有出现bug。大大加快了研发新功能速度。

   比如你A后端的scriptList,复制代码为新功能后,B后端按照规则就改为scriptList_B。然后写到B前端的时候,你忘记了B后端的名称,找起来太麻烦,直接看看A前端的复制粘贴的代码是scriptList接口调用,那按照规则,B后端就一定是scriptList_B,直接改就行,而不需要去查B后端了。

   好,本节分享到此结束,祝大家吸收哦~

相关文章
|
缓存 数据可视化 JavaScript
draw-io
Draw.io是一个可配置的图表/白板可视化应用程序。draw.io 由英国软件公司JGraph Ltd拥有和开发。这是一个开源项目(但对贡献是封闭的)可以绘制流程图、UML、类图、组织结构图、泳道图、E-R图、思维导图等
929 0
draw-io
|
12月前
|
IDE 算法 Java
通义灵码企业级能力全面升级
本指南介绍如何使用通义灵码企业版提升代码质量和效率。首先,需注册并登录通义灵码企业版及 IDE 插件,下载本地工程和知识库压缩包,创建企业知识库并上传文档和代码。随后,可通过开启检索增强功能体验基于企业规范的代码风格优化、前端组件代码补全及后端算法函数生成等功能,显著提高开发效率和代码质量。
326 2
|
9月前
|
人工智能 关系型数据库 数据处理
快速构建,JeeLowCode让你的应用开发速度飞起来#快速开发
低代码平台通过直观的图形化界面和模块化设计,大幅缩短开发时间,降低成本,使企业无需大量技术人员即可快速构建应用。平台支持多种数据库、数据处理与管理,具备高效引擎和丰富的插件生态,帮助企业快速应对市场变化,推动数字化转型。演示地址:http://demo.jeelowcode.com/ 官网地址:http://www.jeelowcode.com
快速构建,JeeLowCode让你的应用开发速度飞起来#快速开发
|
Java 数据库连接 数据库
Spring 与【MyBatis 】和【 pageHelper分页插件 】整合
Spring 与【MyBatis 】和【 pageHelper分页插件 】整合
361 0
|
机器学习/深度学习 自然语言处理 TensorFlow
迁移学习入门指南超棒!教你如何利用预训练模型加速 TensorFlow 项目开发,开启高效之旅!
【8月更文挑战第31天】在深度学习领域,迁移学习是种在资源有限的情况下快速开发高性能模型的技术。本指南介绍如何在TensorFlow中利用预训练模型实现迁移学习,包括选择、加载预训练模型、自定义顶层、冻结预训练层及训练模型等内容,以帮助提升模型性能和训练速度。
303 0
|
11月前
|
机器学习/深度学习 编解码 数据可视化
转置卷积-清晰易懂
转置卷积(Transpose Convolution)是一种用于图像上采样的技术,常用于图像分割、生成对抗网络(GAN)等领域。与传统的上采样方法不同,转置卷积通过学习参数来实现更优的插值效果。本文介绍了转置卷积的背景、应用、与标准卷积的区别以及数学推导,帮助读者深入理解其原理和应用场景。
942 1
|
12月前
|
Kubernetes Cloud Native 开发者
云原生技术:打造弹性、可扩展的现代应用
【9月更文挑战第13天】在这篇文章中,我们将探索云原生技术的核心概念及其对现代软件开发的意义。通过实际代码示例,我们会深入理解如何构建和部署在云端的应用,确保它们能够自动扩展、自我修复,并在全球任何地方无缝运行。文章将揭示云原生技术如何赋能开发者和组织,以应对不断变化的市场需求。
158 10
干货在线 | ArcGIS三种底图影像调色技巧
干货在线 | ArcGIS三种底图影像调色技巧
740 0
|
负载均衡 网络协议 数据库
ENSP中RIP动态路由协议(原理和配置)
`RIP (Routing Information Protocol)` 是一种距离矢量动态路由协议,用于路由器之间交换网络可达性信息。它基于跳数作为度量标准来衡量到达目的地的距离,最常用于小型网络。RIP有以下关键特点: 1. **实现网络互通**:路由器通过RIP学习彼此的路由信息,构建完整的路由表。 2. **动态更新**:路由器周期性广播其路由表,以应对网络拓扑变化。 3. **负载均衡**:RIPv2支持负载均衡,可根据链路负载选择最佳路径。 4. **简单配置**:适用于小型网络,配置和管理相对简单。 5. **成本效益**:作为免费协议,降低了网络部署和维护成本。
875 0
ENSP中RIP动态路由协议(原理和配置)
|
存储 分布式计算 安全
分布式文件系统(HDFS产生背景及定义 HDFS优缺点 HDFS体系架构 HDFS文件块大小)
分布式文件系统(HDFS产生背景及定义 HDFS优缺点 HDFS体系架构 HDFS文件块大小)
422 0