這篇文章給大家介紹AWTK是如何保證代碼質(zhì)量的呢,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元曲阜做網(wǎng)站,已為上家服務(wù),為曲阜各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
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)對各種需求和變化時(shí),不斷完善和優(yōu)化出來的。常常見到,有人花十年時(shí)間打造一件絕世作品,也有人花幾年時(shí)間讓一套軟件變成不可維護(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í)設(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í),沒有考慮可測試性,那么單元測試是很難寫的。所幸在設(shè)計(jì)AWTK之初,我們就非常注重它可測試性。針對接口編程和依賴注入(DIP)是提高代碼可測試重要的方法,在AWTK中有大量的接口和依賴注入,這使得AWTK絕大部分組件都可以編寫單元測試。有人說單元測試只能解決25%-50%的問題。我贊同這個(gè)觀點(diǎn),單元測試不是全能的,但它確實(shí)非常有用,我們也在不斷完善AWTK的測試用例,讓單元測試起到更大的作用。
Code Review。Code Review也是提高代碼質(zhì)量極好的手段,每次增加新的功能或修改BUG,我們都會去Review相關(guān)的代碼。在Review時(shí),經(jīng)常發(fā)現(xiàn)一些丑陋的代碼,有時(shí)甚至完全不相信這些代碼是自己寫出來的,這時(shí)會慶幸進(jìn)行了Code Review,否則這些丑陋的代碼就不被發(fā)現(xiàn)。通過Code Review發(fā)現(xiàn)這些丑陋的代碼,并及時(shí)對其重構(gòu),不但讓提高了代碼的質(zhì)量,還能有效防止破窗效應(yīng)的出現(xiàn)。
在不同平臺進(jìn)行測試。不同的平臺、不同的編譯器、甚至不同版本的操作系統(tǒng)和不同版本的編譯器,都會發(fā)現(xiàn)新的問題。所以我們會定期在MacOS,Linux、Windows和各個(gè)嵌入式平臺上進(jìn)行測試,保證在各個(gè)平臺上運(yùn)行正常,這對提高代碼質(zhì)量也非常有用的。
用valgrind進(jìn)行動態(tài)檢查。用C/C++寫代碼時(shí),內(nèi)存問題,比如:內(nèi)存泄露、越界訪問和野指針,這些問題引發(fā)的后果,可能隨機(jī)出現(xiàn),也可能很長時(shí)間后才出現(xiàn),所以很難調(diào)試和定位。幸好動態(tài)檢查對這類問題非常有效,valgrind是一個(gè)強(qiáng)大且免費(fèi)的動態(tài)檢查工具,它能檢查出絕大部分內(nèi)存問題(與運(yùn)行時(shí)代碼的覆蓋率有關(guān))??上С諰inux平臺,而且對SDL支持不好。為了使用valgrind,我們及時(shí)支持了Linux Framebuffer,這使得我們可以用valgrind對AWTK進(jìn)行全面檢查。
手工測試。手工測試也是必不可少的,我們會定期(基本上每天)手工把demoui中展現(xiàn)的功能測試一遍,有時(shí)會發(fā)現(xiàn)一些單元測試遺漏的問題或者無法自動測試的問題。
經(jīng)常修改。《架構(gòu)整潔之道》中提出一個(gè)觀點(diǎn):要使軟件架構(gòu)穩(wěn)定,你就要不斷的修改它。這個(gè)觀點(diǎn)初看有點(diǎn)自相矛盾,經(jīng)常修改的東西會穩(wěn)定嗎?仔細(xì)一想,它又確實(shí)與我們過去多年的經(jīng)驗(yàn)不謀而合:增加新功能時(shí)去完善它,在修改BUG去完善它,沒事就去Review并重構(gòu)它,架構(gòu)自然越來越好,代碼質(zhì)量自然越來越高。當(dāng)然,前提你的單元測試用例盡可能完善,否則沒人敢去修改一個(gè)大型的代碼。如果你關(guān)注AWTK,你就會發(fā)現(xiàn)AWTK幾乎天天都有很多改動,這些改動可能并沒有增加新的功能。
群策群力。ZLG內(nèi)部有不少同事在基于AWTK做項(xiàng)目,外部有些一些朋友開始使用AWTK,他們也會發(fā)現(xiàn)一些漏網(wǎng)的問題,或提出一些新的需求。我們會及時(shí)響應(yīng)這問題,對于嚴(yán)重的問題,基本上在當(dāng)天都能解決。
自動化集成測試。這部分工作還沒有做,不過已經(jīng)排入計(jì)劃。目前有兩個(gè)想法:一是支持事件的錄制和重放,并通過AI實(shí)現(xiàn)自動測試。二是支持appium等流行自動測試框架,用腳本對UI進(jìn)行自動測試。
關(guān)于AWTK是如何保證代碼質(zhì)量的呢就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。