溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

AWTK是如何保證代碼質(zhì)量的呢

發(fā)布時間:2021-12-22 13:57:34 來源:億速云 閱讀:328 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家介紹AWTK是如何保證代碼質(zhì)量的呢,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

AWTK是ZLG開源的GUI引擎,不少朋友關(guān)心AWTK是如何保證代碼質(zhì)量的,這里統(tǒng)一回復(fù)一下。我們在保證AWTK的代碼質(zhì)量方面,主要采用了下列措施:

  • 架構(gòu)設(shè)計(jì)。 軟件架構(gòu)對代碼的質(zhì)量有決定性的影響,但好的架構(gòu)不是預(yù)先設(shè)計(jì)出來的,而是在應(yīng)對各種需求和變化時,不斷完善和優(yōu)化出來的。常常見到,有人花十年時間打造一件絕世作品,也有人花幾年時間讓一套軟件變成不可維護(hù),這就是說明軟件架構(gòu)是在不斷變化的,是變好還是變壞,則取決于開發(fā)者的意志。從一開始我們就把AWTK的架構(gòu)優(yōu)化放在首要地位,無論是增加新的功能還修改BUG,每一次改動都AWTK的架構(gòu)進(jìn)行改進(jìn)和優(yōu)化。AWTK的設(shè)計(jì)思想基本來自《系統(tǒng)程序員成長計(jì)劃》,另外《設(shè)計(jì)模式》、《實(shí)時設(shè)計(jì)模式》、《軟件框架設(shè)計(jì)的藝術(shù)》和《架構(gòu)整潔之道》等書籍對AWTK架構(gòu)的發(fā)展影響也很大。AWTK的架構(gòu)還有很大的改進(jìn)空間,但我們相信通過不斷的優(yōu)化,AWTK的架構(gòu)會越來越完善。

  • 單元測試。 代碼的可測試對于單元測試至關(guān)重要,如果在設(shè)計(jì)系統(tǒng)架構(gòu)時,沒有考慮可測試性,那么單元測試是很難寫的。所幸在設(shè)計(jì)AWTK之初,我們就非常注重它可測試性。針對接口編程和依賴注入(DIP)是提高代碼可測試重要的方法,在AWTK中有大量的接口和依賴注入,這使得AWTK絕大部分組件都可以編寫單元測試。有人說單元測試只能解決25%-50%的問題。我贊同這個觀點(diǎn),單元測試不是全能的,但它確實(shí)非常有用,我們也在不斷完善AWTK的測試用例,讓單元測試起到更大的作用。

  • Code Review。 Code Review也是提高代碼質(zhì)量極好的手段,每次增加新的功能或修改BUG,我們都會去Review相關(guān)的代碼。在Review時,經(jīng)常發(fā)現(xiàn)一些丑陋的代碼,有時甚至完全不相信這些代碼是自己寫出來的,這時會慶幸進(jìn)行了Code Review,否則這些丑陋的代碼就不被發(fā)現(xiàn)。通過Code Review發(fā)現(xiàn)這些丑陋的代碼,并及時對其重構(gòu),不但讓提高了代碼的質(zhì)量,還能有效防止破窗效應(yīng)的出現(xiàn)。

  • 在不同平臺進(jìn)行測試。 不同的平臺、不同的編譯器、甚至不同版本的操作系統(tǒng)和不同版本的編譯器,都會發(fā)現(xiàn)新的問題。所以我們會定期在MacOS,Linux、Windows和各個嵌入式平臺上進(jìn)行測試,保證在各個平臺上運(yùn)行正常,這對提高代碼質(zhì)量也非常有用的。

  • 用valgrind進(jìn)行動態(tài)檢查。 用C/C++寫代碼時,內(nèi)存問題,比如:內(nèi)存泄露、越界訪問和野指針,這些問題引發(fā)的后果,可能隨機(jī)出現(xiàn),也可能很長時間后才出現(xiàn),所以很難調(diào)試和定位。幸好動態(tài)檢查對這類問題非常有效,valgrind是一個強(qiáng)大且免費(fèi)的動態(tài)檢查工具,它能檢查出絕大部分內(nèi)存問題(與運(yùn)行時代碼的覆蓋率有關(guān))??上С諰inux平臺,而且對SDL支持不好。為了使用valgrind,我們及時支持了Linux Framebuffer,這使得我們可以用valgrind對AWTK進(jìn)行全面檢查。

  • 手工測試。 手工測試也是必不可少的,我們會定期(基本上每天)手工把demoui中展現(xiàn)的功能測試一遍,有時會發(fā)現(xiàn)一些單元測試遺漏的問題或者無法自動測試的問題。

  • 經(jīng)常修改。 《架構(gòu)整潔之道》中提出一個觀點(diǎn):要使軟件架構(gòu)穩(wěn)定,你就要不斷的修改它。這個觀點(diǎn)初看有點(diǎn)自相矛盾,經(jīng)常修改的東西會穩(wěn)定嗎?仔細(xì)一想,它又確實(shí)與我們過去多年的經(jīng)驗(yàn)不謀而合:增加新功能時去完善它,在修改BUG去完善它,沒事就去Review并重構(gòu)它,架構(gòu)自然越來越好,代碼質(zhì)量自然越來越高。當(dāng)然,前提你的單元測試用例盡可能完善,否則沒人敢去修改一個大型的代碼。如果你關(guān)注AWTK,你就會發(fā)現(xiàn)AWTK幾乎天天都有很多改動,這些改動可能并沒有增加新的功能。

  • 群策群力。 ZLG內(nèi)部有不少同事在基于AWTK做項(xiàng)目,外部有些一些朋友開始使用AWTK,他們也會發(fā)現(xiàn)一些漏網(wǎng)的問題,或提出一些新的需求。我們會及時響應(yīng)這問題,對于嚴(yán)重的問題,基本上在當(dāng)天都能解決。

  • 自動化集成測試。 這部分工作還沒有做,不過已經(jīng)排入計(jì)劃。目前有兩個想法:一是支持事件的錄制和重放,并通過AI實(shí)現(xiàn)自動測試。二是支持appium等流行自動測試框架,用腳本對UI進(jìn)行自動測試。

關(guān)于AWTK是如何保證代碼質(zhì)量的呢就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI