这段代码
嵌入式Linux
共 603字,需浏览 2分钟
·
2023-07-15 02:12
这是在微信群聊里面大家讨论的一段代码
很简单,所以也拿出来给大伙看看这段还有有什么可以改进的地方,或者说这段代码会不会陷入什么陷阱🪤之类的。 这是一段比较简单的写寄存器然后又读出来做二次校验的代码,先是判断了写函数的返回值,如果写入成功,然后就读对应的寄存器,并且使用了 do……while 的写法。
我第一个疑问就来了,为什么返回值已经是 E_OK 了,还需要在读出来做二次校验,OK 不就意味着已经写入成功了吗? 其次,就是我们在群里讨论比较多的疑惑,有没有一种情况导致不能退出 while 循环,就是读函数返回了 OK,然后controlWord与上的 MASK 也不等于 0 ,我们就用脑子拍想一下,有没有可能出现这种情况「即使是万分之一的概率」?
我不管下面什么逻辑,至少从字面的逻辑上来说,是有可能进入 while 循环的,虽然第一手的作者可能知道一些不可告人的秘密,他能保证这个代码是安全可靠的,但是我们接手这个代码从一个正常男性可以正常思考来说,就有这种可行性。
那既然这样,就可以认为这代码有些缺失的地方。
我觉得写代码应该也要符合人的思考,要不然就容易费脑,容易掉头发的。
还有,XDM,这个月的搞定寄存器计划真的没人报名了吗?我真的花心思了,还有没有人需要的啊,我真的想把这个做大做强啊。
跟韦东山老师搞事
很简单,所以也拿出来给大伙看看这段还有有什么可以改进的地方,或者说这段代码会不会陷入什么陷阱🪤之类的。 这是一段比较简单的写寄存器然后又读出来做二次校验的代码,先是判断了写函数的返回值,如果写入成功,然后就读对应的寄存器,并且使用了 do……while 的写法。
我第一个疑问就来了,为什么返回值已经是 E_OK 了,还需要在读出来做二次校验,OK 不就意味着已经写入成功了吗? 其次,就是我们在群里讨论比较多的疑惑,有没有一种情况导致不能退出 while 循环,就是读函数返回了 OK,然后controlWord与上的 MASK 也不等于 0 ,我们就用脑子拍想一下,有没有可能出现这种情况「即使是万分之一的概率」?
我不管下面什么逻辑,至少从字面的逻辑上来说,是有可能进入 while 循环的,虽然第一手的作者可能知道一些不可告人的秘密,他能保证这个代码是安全可靠的,但是我们接手这个代码从一个正常男性可以正常思考来说,就有这种可行性。
那既然这样,就可以认为这代码有些缺失的地方。
我觉得写代码应该也要符合人的思考,要不然就容易费脑,容易掉头发的。
还有,XDM,这个月的搞定寄存器计划真的没人报名了吗?我真的花心思了,还有没有人需要的啊,我真的想把这个做大做强啊。
跟韦东山老师搞事
评论