深度講解Android 版本大雜燴
對(duì)于每一個(gè)IT行業(yè)的從業(yè)人員,無(wú)論是開(kāi)發(fā)人員、項(xiàng)目經(jīng)理、還是測(cè)試人員,推出的Android 版本會(huì)使我們的編程工作更簡(jiǎn)單和更輕松,下面就讓我?guī)Т蠹疫M(jìn)入Android 版本的大雜燴吧。
而必須由程序員負(fù)責(zé)建立起問(wèn)題空間和解空間之間聯(lián)系的橋梁。于是人們?cè)噲D直接在機(jī)器上建立問(wèn)題空間的模型,面向?qū)ο笳Z(yǔ)言應(yīng)運(yùn)而生。面向?qū)ο笳Z(yǔ)言用對(duì)象來(lái)模擬現(xiàn)實(shí)世界中的事物,于是它也就跟現(xiàn)實(shí)世界的事物一樣,擁有了它需要的各種特性。
在這個(gè)大背景下,對(duì)象必然擁有自己的類別,于是引入了class的概念。Android 版本對(duì)象要跟外界交互,它的接口便是類的函數(shù)。為了控制類的創(chuàng)建者和類的使用者之間的聯(lián)系,提高模塊的獨(dú)立性,必要的封裝是少不了的。實(shí)現(xiàn)代碼重用是編程界的重大問(wèn)題。于是面向?qū)ο笳Z(yǔ)言使用組合來(lái)重用類的實(shí)現(xiàn),引入繼承來(lái)重用類的接口。而為了重用類的客戶代碼,多態(tài)就必不可少了。
談到對(duì)象,不免要談到它的創(chuàng)建和銷毀,以控制其生存期和存儲(chǔ)區(qū)。C++的設(shè)計(jì)目標(biāo)是效率***,它靈活多變但比較復(fù)雜的內(nèi)存管理機(jī)制便顯得理所當(dāng)然了。意外處理是實(shí)際項(xiàng)目中的大問(wèn)題。
標(biāo)準(zhǔn)C++在這方面做了大幅度的增強(qiáng),在語(yǔ)言上保證錯(cuò)誤將被處理并且可以恢復(fù)正常。下面作者用很大的篇幅介紹了軟件分析和設(shè)計(jì)的過(guò)程?,F(xiàn)成的方法都是為了最復(fù)雜的情況設(shè)計(jì)的,我們只需采用一小部分,夠用就行。
總的來(lái)說(shuō),Android 版本作者提倡盡快讓程序運(yùn)行起來(lái),通過(guò)簡(jiǎn)要的分析,把最重要的部分和風(fēng)險(xiǎn)比較大的部分優(yōu)先考慮,盡早拿出一個(gè)測(cè)試版本。當(dāng)然不是直接開(kāi)始編碼,哪怕再簡(jiǎn)單的分析也比直接開(kāi)始編碼好得多。但不要過(guò)早陷入細(xì)節(jié),分析不可能一步到位,總有些因素要到編碼甚至測(cè)試階段才能發(fā)現(xiàn)。
分析應(yīng)該做到什么程度呢,對(duì)于面向?qū)ο缶幊虂?lái)說(shuō),就是要搞清有哪些對(duì)象,它們各有什么接口,你可能需要更多的說(shuō)明信息,但絕不能再少了。整個(gè)過(guò)程大概可以分衣五個(gè)步驟:
0.制訂計(jì)劃。直接開(kāi)做也是一種計(jì)劃,但增加幾個(gè)里程碑往往更能激勵(lì)程序員,也多了慶祝的機(jī)會(huì)。這里用高度抽象的幾句話概括整個(gè)系統(tǒng)即可,以后覺(jué)得不夠準(zhǔn)確可以改。
1.做什么。即需求分析和系統(tǒng)規(guī)范說(shuō)明。這些文檔通常要經(jīng)過(guò)討論,所以越精簡(jiǎn)越好。作者建議使用用例,一個(gè)用例揭示了系統(tǒng)的一個(gè)功能,包括它在各種情況下的反應(yīng)。用例應(yīng)該盡量簡(jiǎn)單,以免過(guò)早被一些細(xì)節(jié)所困擾。接下來(lái),就該制定時(shí)間進(jìn)度表了,盡可能忠實(shí)地估算時(shí)間,乘以2再加上10%,基本上就可以很好地完成任務(wù)了。
2.怎么做。作者建議使用CRC卡,用一張3乘5的卡片,記錄一個(gè)類的名字、功能及其交互??ㄆ臻g有限,以免過(guò)早陷入細(xì)節(jié),它讓你盡快對(duì)系統(tǒng)的全貌有一個(gè)初步的認(rèn)識(shí),也方便討論。
你也可以使用UML。對(duì)象的設(shè)計(jì)一般分為五個(gè)階段:對(duì)象的發(fā)現(xiàn)、對(duì)象的組裝、對(duì)象的構(gòu)造、系統(tǒng)的擴(kuò)充和對(duì)象的重用。每個(gè)階段都可能出現(xiàn)新的類,所以不要奢望在這個(gè)階段就提出所有類。
對(duì)象的開(kāi)發(fā)原則是:一個(gè)類只解決一個(gè)問(wèn)題,系統(tǒng)設(shè)計(jì)的主要任務(wù)就是實(shí)現(xiàn)需要的類,不要強(qiáng)求一步到位,盡早開(kāi)始編程,盡量簡(jiǎn)單。
3.創(chuàng)建內(nèi)核。只實(shí)現(xiàn)讓系統(tǒng)運(yùn)行起來(lái)的必要部分和風(fēng)險(xiǎn)比較大的部分,以盡早看到結(jié)果。
4.迭代用例。一次迭代增加一個(gè)用例,逐步完善。
5.進(jìn)化。盡善盡美,以備后用。
各種分析和設(shè)計(jì)方法中最突出的就是極限編程了,很多方法都受它影響,它最重要的兩條是先寫測(cè)試和結(jié)對(duì)編程。
先寫測(cè)試能強(qiáng)迫程序員給出完整清晰的類接口,還能在每次建立系統(tǒng)時(shí)自動(dòng)測(cè)試。從檢測(cè)的觀點(diǎn)來(lái)看,程序設(shè)計(jì)語(yǔ)言的進(jìn)步就是檢測(cè)的進(jìn)步,匯編語(yǔ)言只能檢查到語(yǔ)法錯(cuò)誤,過(guò)程設(shè)計(jì)語(yǔ)言還能檢測(cè)一些語(yǔ)義上的錯(cuò)誤,而面向?qū)ο缶幊陶Z(yǔ)言對(duì)主義的檢查更為嚴(yán)格。
盡管如此,有些錯(cuò)誤還是只有運(yùn)行的時(shí)候才能發(fā)現(xiàn),Android 版本這就需要我們加入一些測(cè)試代碼來(lái)保證程序的正確性。結(jié)對(duì)編程就是讓一個(gè)人寫代碼,另一個(gè)人考慮全局,一旦編碼無(wú)法進(jìn)行下去,就可以交換過(guò)來(lái),再不行還可以讓大家一起討論。
【編輯推薦】






