這段代碼
這是在微信群聊里面大家討論的一段代碼
很簡單,所以也拿出來給大伙看看這段還有有什么可以改進(jìn)的地方,或者說這段代碼會不會陷入什么陷阱??之類的。
這是一段比較簡單的寫寄存器然后又讀出來做二次校驗(yàn)的代碼,先是判斷了寫函數(shù)的返回值,如果寫入成功,然后就讀對應(yīng)的寄存器,并且使用了 do……while 的寫法。
我第一個(gè)疑問就來了,為什么返回值已經(jīng)是 E_OK 了,還需要在讀出來做二次校驗(yàn),OK 不就意味著已經(jīng)寫入成功了嗎? 其次,就是我們在群里討論比較多的疑惑,有沒有一種情況導(dǎo)致不能退出 while 循環(huán),就是讀函數(shù)返回了 OK,然后controlWord與上的 MASK 也不等于 0 ,我們就用腦子拍想一下,有沒有可能出現(xiàn)這種情況「即使是萬分之一的概率」?
我不管下面什么邏輯,至少從字面的邏輯上來說,是有可能進(jìn)入 while 循環(huán)的,雖然第一手的作者可能知道一些不可告人的秘密,他能保證這個(gè)代碼是安全可靠的,但是我們接手這個(gè)代碼從一個(gè)正常男性可以正常思考來說,就有這種可行性。
那既然這樣,就可以認(rèn)為這代碼有些缺失的地方。
我覺得寫代碼應(yīng)該也要符合人的思考,要不然就容易費(fèi)腦,容易掉頭發(fā)的。
還有,XDM,這個(gè)月的搞定寄存器計(jì)劃真的沒人報(bào)名了嗎?我真的花心思了,還有沒有人需要的啊,我真的想把這個(gè)做大做強(qiáng)啊。
跟韋東山老師搞事
很簡單,所以也拿出來給大伙看看這段還有有什么可以改進(jìn)的地方,或者說這段代碼會不會陷入什么陷阱??之類的。
這是一段比較簡單的寫寄存器然后又讀出來做二次校驗(yàn)的代碼,先是判斷了寫函數(shù)的返回值,如果寫入成功,然后就讀對應(yīng)的寄存器,并且使用了 do……while 的寫法。我第一個(gè)疑問就來了,為什么返回值已經(jīng)是 E_OK 了,還需要在讀出來做二次校驗(yàn),OK 不就意味著已經(jīng)寫入成功了嗎? 其次,就是我們在群里討論比較多的疑惑,有沒有一種情況導(dǎo)致不能退出 while 循環(huán),就是讀函數(shù)返回了 OK,然后controlWord與上的 MASK 也不等于 0 ,我們就用腦子拍想一下,有沒有可能出現(xiàn)這種情況「即使是萬分之一的概率」?
我不管下面什么邏輯,至少從字面的邏輯上來說,是有可能進(jìn)入 while 循環(huán)的,雖然第一手的作者可能知道一些不可告人的秘密,他能保證這個(gè)代碼是安全可靠的,但是我們接手這個(gè)代碼從一個(gè)正常男性可以正常思考來說,就有這種可行性。
那既然這樣,就可以認(rèn)為這代碼有些缺失的地方。
我覺得寫代碼應(yīng)該也要符合人的思考,要不然就容易費(fèi)腦,容易掉頭發(fā)的。
還有,XDM,這個(gè)月的搞定寄存器計(jì)劃真的沒人報(bào)名了嗎?我真的花心思了,還有沒有人需要的啊,我真的想把這個(gè)做大做強(qiáng)啊。跟韋東山老師搞事
評論
圖片
表情
