测试平台系列(124) 学会给自己review代码

1,223 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

大家好~我是米洛
我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持。
欢迎关注我的公众号米洛的测开日记,一起交流学习!

回顾

好久不见,上一节我们完成了前端添加用例相关功能的改造,虽然还是不太满意,但也还过得去了,起码稍微顺手了一点点

有时候我常常感叹时间是如此不够用。自己的教程虽然坚持了很久,但仿佛有点更不下去的迹象。

想法特别多,想做mock平台,数据工厂,又觉得做了需要补个教程。想做一个类testerhome的网站,又觉得光做不讲没意思。但对我来说,内容这么多,确实有点分身乏术。

有时候想着,干脆自己悄咪咪做吧,也不做啥分享,不做啥视频了。但一想到写文章/做视频,帮助他人,我还是挺开心的。其实这条路还真的是挺难坚持的,如果能一下子有3个我就好了=。=

进入正题

随着pity的基础功能越来越完善,我也渐渐打起了优化的主意。有时候自己为了应付一个功能,会很随意写一些代码,有点堆屎山的意思。

所以今天我花了一点时间,给自己review了一下代码,也可以给大家一点参考。我们只有阅读过更多的代码,才能写出更好的代码。也许写的时候是随意的,但事后肯定是能找出问题的。

优化/建议

以下内容大多是自己的经验,也可能有不对的地方,仅供参考,不喜轻喷

  • magic number太多

    这里指的是,我们随手添加的可重复使用的一些数字,往好了说应该是需要抽出来作为一个常量变量的。

    来看点例子:

随便一搜索,就能看到很多这种1,2这样的数,语义不明确,完全可以定义一个枚举类使得代码更有可读性

可怕的是,搜索相关例子,还能出来好几个这样的例子,说明之前真的就是随心所欲地写。

  • 未指定返回值,参数未添加类型,部分方法没有文档

看看我截图的2个方法,下面那个方法就没有相关注释(方法描述),在方法参数也没有指定类型,也没有指定返回值。

先来说说指定类型的好处:

  • 编译器智能提示,当类型不匹配(比如你换了参数顺序,但调用的时候没换顺序,这时候编辑器会给出提示)

  • 指定返回值,道理同上,更好的一点是可以智能补全

    注释的意义就不用我多说了吧,建议每个方法都或多或少加点注释,作为一个开源的项目,这点说明还是要有的,不然到时候可能自己都读不懂了。

  • 改掉go的if err != nil的写法

由于项目初期的我,写go比较多,导致我习惯性定义方法的返回值为具体的返回+err,这样的习惯很不好,写到Python里面就是四不像

  • 多封装自定义Exception

    异常不能统一都用Exception,虽然用起来没啥毛病,但如果能准确定义某一种异常,比如认证异常数据找不到异常, 权限不够异常等等,这样遇到异常就知道是啥错,多学学别人封装的异常类

这里建议raise DbConnectionException("xxx")

  • 不用的变量建议用下划线代替

    不同于go语言的强制使用定义的变量,Python可以只定义但不使用变量。还是上面那个方法,看到user_info了吗?

    这个方法是个鉴权的方法,虽然我们不获取用户信息,但是我们还是需要用户登录后才能完成此操作,所以我们可以把变量user_info改为_

这样pycharm也不再报未使用的提示了。

  • 多用格式化/引用优化

    由于我自己写代码比较注意这一块,所以我会习惯性做这2件事,也就是CTRL+ALT+L和CTRL+ALT+O(字母o)

  • 多熟悉pydantic

    对于我而言,pydantic仅仅用来当做参数校验工具,但其实并不是这样,pydantic其实也可以指定具体要返回的字段,通过response_model形成闭环,完成整个request的生命周期

    以上,就是我今天阅读自己代码找出的一些优化点,希望能对大家有所帮助。经常康康自己的代码,也是有好处的~

我是米洛,一个测试开发陪练!免费的小黄心,帮我点一个吧!

项目地址: github.com/wuranxu/pit…