想提升代码质量?assertvalid方法你一定要会!

吉云

今儿个咱来聊聊我在写代码时碰到的一个事儿,跟“assertvalid”这玩意儿有关。一开始我也不太明白这是个后来琢磨琢磨,发现还挺有用的。

事情是这样的,前段时间我不是一直在捣鼓一个项目嘛代码写一大堆。结果有一天,程序跑着跑着突然就崩,还蹦出来一堆我看不懂的错误提示。这给我郁闷的,辛辛苦苦写半天,结果就这?

我开始翻箱倒柜地找问题,一行一行代码地看,眼睛都快看瞎。后来我突然想起来,之前好像在哪儿看到过一个叫“assert”的东西,说是能帮忙检查代码是不是有问题。我就琢磨着,死马当活马医,试试看。

想提升代码质量?assertvalid方法你一定要会!

然后我就去网上搜一下,发现C++里头有个叫“assert”的函数。这玩意儿简单来说,就是个“断言”,你可以给它一个条件,它会帮你判断这个条件是不是真的。如果条件是真的,那就啥事儿没有,程序继续跑;如果是假的,那程序就会立马停下来,并且告诉你哪里出错。

我就在代码里头加几个“assert”,把我觉得可能会出错的地方都给“断言”一下。然后,我重新跑一遍程序。你猜怎么着?程序还真就在我加“assert”的地方停下来!这下我就知道问题出在哪儿,赶紧把代码改改。

改完之后,我再跑一遍程序,这回就顺利多,没再出啥幺蛾子。我这才明白,“assert”这玩意儿还真挺管用的,能帮我快速找到代码里的问题。

后来我又看到有“assert_valid”这种说法。我就纳闷,这跟“assert”有啥区别?查资料才知道,原来“assert_valid”更像是一个自定义的检查,专门用来看看对象的状态是不是正常的。有些框架或者库里头会有这个东西,但C++标准库里头是没有的。

不过这给我一个启发。我也可以自己写一个类似的函数,用来检查我的那些个对象是不是都好好的。这样,我就不用担心程序跑着跑着,因为某个对象状态不对而突然挂掉。

我就自己动手,写一个简单的“assert_valid”函数。大概就是这样:

想提升代码质量?assertvalid方法你一定要会!

  • 我会检查一下对象里头的那些个关键数据是不是都在合理的范围内。
  • 然后, 我会看看对象之间的关系是不是正确的。

如果这些检查都通过,那就说明对象是“valid”的,可以放心使用;如果有任何一个检查没通过,那就说明对象有问题,得赶紧处理。

经过这么一番折腾,我现在写代码的时候,都会注意加上一些“assert”或者“assert_valid”之类的检查。这样,我就能更早地发现问题,避免程序跑到一半突然崩溃,也能让我的代码更靠谱一些。

想提升代码质量?assertvalid方法你一定要会!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]