修改他人代码:怎么才能减少发布Bug概率?

简介:

最近的两次Bug:

  1. 做A需求的时候,看到以前的一段代码写的很难看,很不好维护,我忍不了了。所以麻(shou)利(jian)的修改了,然后我就狗带了~
  2. 做B需求的时候,要修改以前的代码,我在已有的函数上加了一个参数。然后我又狗带了~

发bug就像无孔不入的虫子,你以为你堵住了这个洞,但是它有在另外一个洞生长飞进来,防不胜防!

总结:导致发bug的原因往往不在新的功能和新的需求,而在你修改了以前的代码!!这些牵涉到的修改点,测试并不会去很仔细的测啊!!!!

以下是我们高工严厉指出并给我的建议并加上我的个人总结,与大家分享,定期踩坑更新(我希望再也不要更新了!!!)。

1. 修改前与原作者沟通

如果原作者还在,可以和原作者聊一下,最好他能讲一下代码结构,可以减少很多看代码的时间

2. 仔细阅读修改段落的上下文,并Get以下重点:
  • 包括参数命名模式
  • 注释风格等代码风格(分号啊,空行啊,空格啊.....)
  • 参数定义位置(一般都在顶部)
  • 函数定义方式(函数声明方式or 函数表达式方式)
  • 代码结构(MVC分块)

get之后就按照已有的风格进行修改,也许你是一个很有风格的码农,你可以改变其他人一起用这个风格~

3. 开始修改了,以下雷请扫:
  • 定义一个新的变量(函数): 记得检查变量作用域并全局搜索~ 不要自信的觉得你和别人定义的不一样。

  • 修改已有的函数参数: 不要修改参数顺序!!!!这样就算有些调用的地方你没有看到,也会降低很多的bug率。

25cd8e02ac3a97e1249b9fb937e3d2da0635083e


4. review一遍代码,这里分为自己review和邀请其他人review。
  • 自己review:
  1. 看是否有啥异常没有处理。前端经常犯错就是容错性不够好,毕竟从发起后台请求到你拿到数据,过程是多么艰辛。
  2. 修改了哪些点,尽可能记下来会影响哪些模块!!
  • 他人review: 对于新人来很有用啊~
5. 提交测试

把自己会影响的模块列出来发给测试,这样他才知道重点啊~尤其是在写新需求夹带修改旧代码的时候!! 这个很重要!!! 如果有接入前端错误监控的话,关注一下报错内容。我们项目是有接入Badjs错误监控的。

6. 发布之后,你的产品有论坛或者群吗?

有的话直接加上去,观察用户反馈。往往这些地方是bug反馈最及时的~~~~~

总结完了,忐忑的去吃鸡然后默默等待明天批评。



原文发布时间为:2018年05月27日
原文作者:MirroZhou
本文来源:  掘金  如需转载请联系原作者





相关文章
|
Java 容器 Shell
动态给容器指定 Java 启动参数
在做 Java 程序容器化时都会遇到一个问题,ENTRYPOINT ["java", "$JAVA_OPTS", "-jar", ...] 这样的写法 $JAVA_OPTS 就是个字符串无法在运行时展开。为了不把参数硬编码到容器里,每次调整参数重新构建镜像,可以有多种方案。
8656 0
|
缓存 安全 程序员
易语言在跨平台开发中有哪些常见的技术挑战和解决方案?
易语言在跨平台开发中有哪些常见的技术挑战和解决方案?
293 2
|
开发工具 git 网络架构
【Vue3.0移动端项目--旅游网】-- 房屋详情页创建以及房屋详情图片展示
【Vue3.0移动端项目--旅游网】-- 房屋详情页创建以及房屋详情图片展示
508 0
【Vue3.0移动端项目--旅游网】-- 房屋详情页创建以及房屋详情图片展示
|
缓存 Java 关系型数据库
Guava Cache本地缓存在 Spring Boot应用中的实践
概述 在如今高并发的互联网应用中,缓存的地位举足轻重,对提升程序性能帮助不小。而 3.x开始的 Spring也引入了对 Cache的支持,那对于如今发展得如火如荼的 Spring Boot来说自然也是支持缓存特性的。
2697 0
|
机器学习/深度学习 算法 Python
群智能算法:深入解读人工水母算法:原理、实现与应用
近年来,受自然界生物行为启发的优化算法备受关注。人工水母算法(AJSA)模拟水母在海洋中寻找食物的行为,是一种新颖的优化技术。本文详细解读其原理及实现步骤,并提供代码示例,帮助读者理解这一算法。在多模态、非线性优化问题中,AJSA表现出色,具有广泛应用前景。
|
Java 数据库连接 开发者
|
机器人
[leetcode 脑子急转弯] 2731. 移动机器人
[leetcode 脑子急转弯] 2731. 移动机器人
139 1