营业开辟中的调试要领总结

营业开辟中的调试要领总结

这段时刻,打仗了单元测试,同时营业中碰到了一些须要排错调试的状况,就把本身的履历做个小结。

3种调试要领

狼叔说,罕见的三种调试的境地

  • 低级: 打log
  • 中级: 打断点
  • 高等: 测试驱动开辟

事情2年,这三种调试要领也算都打仗过了,固然这是狼叔的意见,在我看来这几种调试体式格局,就说一下我以为他们各自的实用场景,

第一种 打log

运用场景:

  • 你完整相识这段递次的运转历程,只是对某一个环节的运转状况时,打印log
  • 进修新知识时,经由过程打印的体式格局看看,他们是什么

这是最简朴轻易的调试体式格局,

瑕玷就是假如你不停的打印,再检察效果,是比较浪费时刻的。

而且假如你基础不知道递次的运转体式格局,打log的体式格局就很低效了

第二种 打断点

运用场景:

  • 你想不清晰递次的运转历程时,合适打几个断点

比方说有一段庞杂的异步操纵、轮回、递归,你完整不知道它运转到某一个阶段,是什么值,也搞不清晰他们的前后递次。

这时刻打几个断点,不仅仅是多打几个log,你还能够清晰的看到递次运转的历程,前进入那里,进入时的值是多少,都能够轻易的看到。

第三种 测试驱动开辟

运用场景:

  • 大多数场景都能够用,唯一的瑕玷能够就是比较费时。

是不是写单元测试能够更多照样要连系营业场景。

假如你的营业一旦变化,就会致使单元测试失效,而你的这部份营业又常常变化,能够就不合适了。

然则假如你的营业常常变化,然则变化的部份并不会影响单元测试,那这类状况下的单元测试性价比就很高。

你能够恣意的修正和优化代码,而不必忧郁本身的代码逻辑涌现严重bug,毕竟有测试帮你搜检。

然则也要注重测试驱动开辟,也没法保证测试经由过程,营业就一定没题目,毕竟营业往往是很庞杂的,这涉及到代码测试覆蓋率,就算测试覆蓋率100%也不代表没有bug,只能说一切代码都被测试过一遍了

你看,实在这3种调试体式格局真的不分上下,比方你在写单元测试时,涌现了题目,照样要打log来搜检嘛,总不能为测试代码再写一套测试吧。

3种排错思绪

将三种营业开辟中碰到一些“奇葩”题目时的思绪。

所谓的“奇葩”题目,有时刻真的是本身眼拙,或许本身排查的处所没错,关注点错了,而你盯着那段真的准确的代码,天然怎样搜检也查不出题目。

所以有时刻须要用一些小要领来排查

  • 二分法排错
  • 删除法排错
  • 对照排错

二分法排错

面临一坨代码,你也不知道bug出在那里,以至都没报错,或许你基础不想看这段代码。

你就用二分法,第一行、末了一行、中心一行各自打一个log

由于javascript是自上而下运转的,所以一定每次都能把毛病局限减少50%

如许应当重复频频就可以肯定bug在那里啦。

删除法排错

有时刻是不是是会涌现,我没动呀,怎样适才还好好的,如今就不能运转了。

这时刻你能够挑选解释或许删撤除一部份代码,只留下你认知里以为准确的代码。

不停的删除或许解释,直到不再报错

那末,上一步还报错呢,这一端代码被解释后,毛病就消逝啦,天然也就定位到bug的位置啦。

对照排错

有时刻你也不知道是哪一个版本涌现的bug,好像上频频提交就有bug了,而你没注重….

假如删除法和二分法,都没法定位毛病,就只能git reset –hard了

回退到相对没题目的某一次commit

然后应用二分法,找到某一个commit版本没题目,而下一commit版本就出bug了

也就说,定位到题目涌如今那一次代码提交

然后经由过程git diff 关于2次提交,终究改动了哪些代码。

怎样面临没做过的需求

以上是我关于调试、排错的小履历,再分享一种思索体式格局。

就是面临一个你从来没有做过的需求,你不知道怎样做,你以至疑心这个需求能不能做?

这类状况下,我发起只如果听上去比较合理的需求,就不必急着谢绝。

  • 先剖析一下这个需求是不是是通情达理,真的对用户有协助。
  • 假如合理,那末再想一想,这类需求是不是罕见?
  • 毕竟罕见的需求一定有人做过,那末你也就不必忧郁能不能做?怎样做?之类题目啦

举一个小例子

在营业中,老板请求我完成一个二维表格,
这个表格的2个表头,横向和纵向表头数目不牢固。
说实话,我做过二维表格组件,当时搞的比较贫苦,数据的构造被设想的很贫苦,所以我就想找一个现成组件。

奇异的是,你发明怎样都找不到一个二维表格组件,而老板又叫的很急..
这时刻面临的就是一个不知道怎样做的需求。

我是如许思索的:

- 这个需求有无意义?我以为是有的
- 这个需求比较合理,然则不是罕见?好像不罕见,我从没见过二维表格组件,比方element-ui或许其他主流ui组件库都没见过。

这个时刻我就比较忧郁了,想不通为何这个世界上,人人就都不做二维表格的组件呢?

这也太奇怪了

- 因而我转而思索,为何人人都不做二维表格,因而猜测是不是是大多数的二维表格,是能够转化为一维表格的呢?

答案确实云云,二维表格跟一维表格是相似的,至于表头里数目不牢固的题目,能够后端传值给你。然后你轮回衬着就好啦。

所以面临没做过的需求,也不必焦急,只如果合理的需求,我们好好思索,总归是有方法处理的。

    原文作者:Ziwei
    原文地址: https://segmentfault.com/a/1190000016230381
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞