从工作中学到的

    从工作中学到的 代码思考在正式工作之前,我没有写过单测,主要是平时自己写的代码通常耦合度较高,没有单独抽象设计模块的概念。

    最近开始写一些通用能力的基础库需要写单测。第一次单测的编写是在代码基本完成后开始写的,完成单测后会发现一些bug,于是修改bug。但这个过程中会发现代码设计的一些不合理之处,比如多个接口的返回值是否更统一,对于接口可能出现错误时的返回值,应该如何处理(这个可以多参考chromium base库中的代码实现)。如果一个模块的多个接口设计不统一、那么单测同样也会非常复杂。

    其实上面的过程就有点TDD那味了,但是测试驱动开发,需要先写一个无法通过的测试,通过修改代码来使得测试通过,再重构代码。在这个过程中不断的开发代码,而不是先写完代码,再写单测试。

    单测的重要性是毋庸置疑,因为代码复杂性总可能出现某个分支逻辑错误。因此TDD将单测与开发结合,减轻了写单测的难度和压力,同时也能通过单测进一步发现代码的设计问题。

    参考文章:

    从工作中学到的 工作之前刷题会想,刷题这些有什么用,但是今天真的用上了回溯算法,算法思维在工作中还是有用的,尤其是在做一些底层方法/数据结构设计与封装上很有用(对c++是这样,因为c++的stl 方法并不全能)

    比如chromium中的base::Value 结构是一个递归的结果,如果想拿到最深的key-value 键值对,以及此时的路径上所有key拼接的path,就需要回溯。

    再比如一个目录路径按照分割符打成一个vector,另一个目录下的文件路径同样打成一个vector,想要获取相对路径,就是找两个vector 连续公共的部分。

    之前实习面试中,也有面试官出一些手写的题目,估计就是来源于工作中的一些问题抽象。

联系方式

关于我

  • 来自南部的一个小城市,个性不张扬,讨厌随波逐流。

那年今日
1 月前

习惯了就不晕了

2 月前

此条为私密说说,仅发布者可见

4 月前

疫情什么时候结束呀!啊!

6 月前

垂直标签栏用起来真的很有新鲜感,搭配设置里面隐藏标题栏变得很简洁。除此之外cmd+shift+A 设计的搜索标签页的样式比chrome好用

8 月前

9 月前

又跳票了

10 月前

今天早上做的梦:在一辆车上,本来是从北京一个地方开往另一个比较偏的地方,突然开到了福建... 然后一车人的健康码都变红了,因为出了北京,都是质问司机怎么回事,司机说不知道怎么回事转错了弯就开过去了.....