版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
討“前右尢孝軟件工程課程論文題目:軟件工程方法在Android開發(fā)中的
應(yīng)用實(shí)例作者姓名 指導(dǎo)教師 所在學(xué)院專 業(yè) 班 級(jí)完成日期年月日目錄TOC\o"1-5"\h\z\o"CurrentDocument"關(guān)鍵詞 3\o"CurrentDocument"摘要 3\o"CurrentDocument"緒論 3\o"CurrentDocument"從模塊角度分析程序 3\o"CurrentDocument"多模塊設(shè)計(jì) 3\o"CurrentDocument"提高內(nèi)聚,降低耦合 3\o"CurrentDocument"編碼規(guī)范 4\o"CurrentDocument"標(biāo)準(zhǔn)化版面設(shè)計(jì) 4\o"CurrentDocument"注釋的使用 5\o"CurrentDocument"變量名命名 5\o"CurrentDocument"合理判斷 5\o"CurrentDocument"交互體驗(yàn)與性能的平衡 6\o"CurrentDocument"總結(jié) 7\o"CurrentDocument"參考文獻(xiàn) 7\o"CurrentDocument"Keywords 7Abstract 8關(guān)鍵詞軟件工程,Android,移動(dòng)開發(fā),高效編碼,規(guī)范編碼,開發(fā)實(shí)例摘要隨著軟件開發(fā)人員自身水平的不斷提高,開發(fā)者都會(huì)不斷地提高自身的編程能力。不僅是在于編寫的熟練程度上,更重要的是在駕馭代碼的能力上。在實(shí)際的開發(fā)過程中,初級(jí)開發(fā)者常常會(huì)隨心所欲,開發(fā)出來的的代碼質(zhì)量低下,標(biāo)準(zhǔn)化嚴(yán)重缺失。本文通過一個(gè)簡(jiǎn)單的項(xiàng)目實(shí)例,用軟件工程的方法對(duì)代碼進(jìn)行優(yōu)化,最終形成代碼質(zhì)量較高的代碼,對(duì)學(xué)習(xí)者將來編寫代碼規(guī)范具有一定的參考價(jià)值。.緒論在軟件開發(fā)過程中,掌握了基本的開發(fā)語法知識(shí)以及其他基本的語句之后,需要了解的便是對(duì)程序進(jìn)行優(yōu)化改良,并以此為基礎(chǔ),減少程序運(yùn)行所需的系統(tǒng)資源,并簡(jiǎn)化開發(fā)的過程,減少語句,以使系統(tǒng)不斷改良。對(duì)于這個(gè)問題,需要解決的不僅僅是開發(fā)代碼的問題,還有開發(fā)習(xí)慣以及標(biāo)準(zhǔn)化的問題。本文將多個(gè)方面來說明,提高綜合效率。.從模塊角度分析程序多模塊設(shè)計(jì)在軟件系統(tǒng)中,將較大的復(fù)雜的問題分解為許多小的容易解決的問題,就變得更加容易解決。但是模塊過多又會(huì)在模塊連接時(shí)產(chǎn)生過多的問題,增加連接的成本。所以,將程序分成若干個(gè)合適的模塊,使軟件的開發(fā)維護(hù)成本降到最低。在繪圖開發(fā)應(yīng)用程序中,整個(gè)項(xiàng)目大致分為了基本數(shù)據(jù)定義、初始化模塊(程序初始化,初始化設(shè)置菜單,畫布初始化,新建)、繪畫(畫布上繪畫,清除繪畫,繪畫的屏幕觸摸事件監(jiān)聽)、設(shè)置菜單監(jiān)聽、保存(文件名設(shè)置,保存)等模塊,各個(gè)模塊通過互相調(diào)用和修改全局變量的值來進(jìn)行工作。提高內(nèi)聚,降低耦合內(nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系,一個(gè)好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事。它描述的是模塊內(nèi)的功能聯(lián)系。耦合是軟件結(jié)構(gòu)中各模塊之間相互連接的一種度量,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問一個(gè)模塊的點(diǎn)以及通過接口的數(shù)據(jù)。在繪圖項(xiàng)目中,模塊內(nèi)部一般指完成一件事,繪圖的模塊中只把原有圖像和新增的線條繪出,監(jiān)聽模塊只進(jìn)行相應(yīng)的參數(shù)修改和調(diào)用更新,保存功能與文件命名分開,提高內(nèi)聚。而各個(gè)模塊之間通過方法的調(diào)用來實(shí)現(xiàn),一般只傳遞少量參數(shù),模塊之間連接簡(jiǎn)單,降低耦合。.編碼規(guī)范標(biāo)準(zhǔn)化版面設(shè)計(jì)在編碼過程中,要時(shí)刻注意源代碼的版面。良好的層次結(jié)構(gòu)及程序塊的分界符定位可以在很大程度上幫助后期開發(fā)修改的難度以及其他程序員的理解難度。對(duì)于Android開發(fā)來說,默認(rèn)使用Tab鍵作為縮進(jìn)的標(biāo)準(zhǔn)數(shù),而且Tab鍵一般只應(yīng)用于版面的排版,一般不做其他用途,防止錯(cuò)誤識(shí)別以及排版混亂等。以{}為函數(shù)的開始和結(jié)束標(biāo)示符,一般}與函數(shù)首字母對(duì)齊,清楚標(biāo)示作用范圍。priblicbooleanonCreateCptionsMErL'^neri'j)-[Menulnflaterinflater=newMenalTiflater(ttiisJ;inflater.inflate(R.nianj.toolsrmena);returnsuper-,orCreateOptLonsMen'a ;>1對(duì)于XML布局文件,同樣遵循縮進(jìn)的原則。在一對(duì)標(biāo)簽內(nèi)如果沒有內(nèi)容而只有相應(yīng)的屬性,尤其是只有一行的XML代碼,那么可以在屬性后面加上空格和/來結(jié)束標(biāo)簽,使代碼更加有序。<applicatitmandroi-d:e.11owBe.c=nt2?L;e"and二口二d:Lcon= ±衛(wèi)靠匚上曰4"and二0i_曰;工ab已二=r,匚ring/r,android:t.<eir,e=,r&style/App??iEnze,r>tact.ivityandroid:naiae=rricin.Ya.tuya.Wa.in3i:tivityrrandroLd:2_abe2_=,,i?^ti?ing/apf3namsn><i^t-env-£ilver>Cact.ionandrciJd:na_mc="曰ntird值..intfrit;.厘匚七工口n"血工IU”/>tcategoryandr口二:?。憾iue="a尊色二口:&. 匚己tejory.LAUTJCrfEH”/></iTit.enlL-£ilt.er>注釋的使用一般情況下注釋的內(nèi)容占整個(gè)程序的20%到50%,在函數(shù)的開始部位對(duì)函數(shù)作用進(jìn)行說明性注釋,對(duì)于每個(gè)定義的變量,尤其是全局變量,盡量使變量名有意義,否則應(yīng)該對(duì)其含義進(jìn)行注明。在if-else語句中或switch語句中應(yīng)當(dāng)對(duì)判斷條件進(jìn)行說明,表達(dá)判斷內(nèi)容及作用。cas-eR.id.5ave:try{ctw.save();TV保存繪制的圖像:■oatgTl(FarseException.e){e.printStaclcTrace():breaJt;cas'eR.id.nevfils:dw.newfile(dw.cacAecan.vas};77新建國(guó)布bvea.kr變量名命名所有的變量名最好有一定的實(shí)際意義,最好使用英文單詞或者縮寫來對(duì)所需的變量進(jìn)行命名,或在某一類型變量數(shù)量極少時(shí)可以用類名的變形來命名。例如定義一個(gè)Bitmap類的對(duì)象,而且項(xiàng)目中只會(huì)存在一個(gè)該類的對(duì)象,那么就可以命名為bitmap。在Android中,由于開發(fā)語言是Java語言,所以這部分的規(guī)則與Java基本相同。在實(shí)際項(xiàng)目中,對(duì)于一些實(shí)際使用的變量雖然使用了可以理解的英文命名,但是對(duì)一些可能引起歧義的變量名,最好還是進(jìn)行簡(jiǎn)單的注釋。intviewwidt/i;“駐窗intviewheigrit;//回布局度floatstarcxr"回竺起始坐標(biāo)fl&a,tstarty"PatApatri;,?一回選路徑pal^€=111111;/小畫筆Bitmaptiicmap=null;//畫出的圖1象Canvascac?iecanvaB=Liull;intwidr/7回筆粗細(xì)in七col^〃畫筆顏色合理判斷與所有的程序相同,判斷結(jié)構(gòu)是最經(jīng)常使用的結(jié)構(gòu)之一。在Java語言的開發(fā)中,主要使用兩種方式,一種是if-else結(jié)構(gòu),另一種是使用case語句進(jìn)行分支,通過參數(shù)來決定要執(zhí)行的程序等。在本項(xiàng)目中,由于需要監(jiān)聽整個(gè)菜單選項(xiàng)中的所有內(nèi)容,便不適合使用if-else結(jié)構(gòu)來進(jìn)行判斷,使用switch語句根據(jù)case判斷參數(shù)值來決定要執(zhí)行的內(nèi)容。在case情況中,要把最有可能用到的方法放在最前面,加快程序的運(yùn)行效率。在項(xiàng)目中,橡皮的使用頻率遠(yuǎn)比其他菜單的頻率高,所以理應(yīng)排在第一位,其他的大致按照可能應(yīng)用的頻率進(jìn)行排列。publicboolean□nOptiorL5lteniSeJ.ect.ed iten){DrawViewdw=(DrawViewJfindViewEyld(B.id.;dw.paint.serXieiniade(null);取消擦膝效果dw.paint.setEtiokeWidtli(3);設(shè)置默認(rèn)國(guó)笛宮度switch(item,getltentld(}}{〃-簫對(duì)顏色%粗細(xì)、擦出等caseR.±d-dw.cleax(J;調(diào)用橡皮擦除icem.setCiiecked(tme);break.;□aseR.id.Elaeii:dw.paint.setCnlnr(Color.BLACK):iteni.setChecked(tree);hr曰3KrcaseR.id.E_LLi6:dw.paint.setColor(Coloi.BJLI7E);icen.setCnecked(true);break.;□aseR.id. :dw.paint.setColox(Colox.GRAY};item.SEtCiiEclrEd(true);t*r巳己k.:□aseR.id.green:dw.paint.BetCnlnr(Cnloi.■GREKN};item.setChecked(trne);breakscaseR.id.ci?drg£:dw.paint.set^olor(0x±±±±6a00};item,set^iiecked(tma);break.;35交互體驗(yàn)與性能的平衡在系統(tǒng)中,某些變量的取值及判斷會(huì)對(duì)軟件的交互體驗(yàn)以及運(yùn)行流暢性和對(duì)系統(tǒng)資源的消耗有很大的影響。但是,交互體驗(yàn)與系統(tǒng)資源消耗是成反比的,想要畫面更流暢更自然,需要消耗的資源就越多。所以我們需要在這兩者之間找到一個(gè)平衡點(diǎn)。在繪圖項(xiàng)目中,對(duì)于在屏幕上移動(dòng)距離的響應(yīng)的問題便是很好的一個(gè)例子。如果移動(dòng)很短的距離就做出相應(yīng)并繪圖,能夠使得畫面更加及時(shí)細(xì)膩,但是會(huì)消耗大量的資源處理監(jiān)聽和存儲(chǔ)事件。但是如果移動(dòng)一段距離之后再進(jìn)行響應(yīng),就會(huì)降低用戶體驗(yàn)。所以要在這兩者6之間找到一個(gè)平衡點(diǎn),保證用戶體驗(yàn)的同時(shí)減少對(duì)系統(tǒng)資源的消耗。根據(jù)多個(gè)因素考慮,在手指移動(dòng)一個(gè)像素就進(jìn)行繪圖是不現(xiàn)實(shí)也沒有必要的,只需要移動(dòng)一段比較小的距離再進(jìn)行繪圖即可。在實(shí)際試驗(yàn)之后選擇四個(gè)像素點(diǎn)作為移動(dòng)的基本單位來繪圖,用肉眼看不出來瑕疵的同時(shí)有效的減少了資源的消耗。ca.seMcit.lonEvent. WOVE:float ,白上苫(=-3七口工七工};“看方向移動(dòng)后與原來點(diǎn)的距圖floatdy=Mat.?i.d£i^ 右向轉(zhuǎn)動(dòng)后與原方向的距離if(dx>4||dy>4)-[〃大于4像素進(jìn)行事件處理//定義路役用于繪圖,起點(diǎn)位置到起終點(diǎn)位置中心,曲線更平滑path.quadTo(staiti:,staity,(jn-5taitx)/2t(y-h^taity}/2);szatzx=x;〃處理過繪圖之后故變至新原點(diǎn)5taity=y;break;4.總結(jié)要使得代碼更加規(guī)范和易讀,需要的是軟件從業(yè)者規(guī)范的書寫以及細(xì)心。規(guī)范的代碼和高效的程序會(huì)使得工作更加便捷,修改和閱讀也更加容易??傊?,規(guī)范代碼和高效算法,將使程序更加完美。參考文獻(xiàn)[1]鄭人杰,馬素霞,殷人昆.軟件工程概論[M].北京:機(jī)械工業(yè)出版社,2009.11⑵歐陽零.Android編程兵書[M].北京:電子工業(yè)出版社,2014.1[3]百度百科.內(nèi)聚和耦合[EB/OL].[2015-5]http:〃/link?url=aB1uogMfGHyc49rZhYBLoegEEg1pwxQHAAy40VS0csx23FgeLfdSwlIyxUKpq0REZrUVFqpjH8cpTVy20kUHya[4]Android開發(fā)網(wǎng).繪圖開發(fā)[CP/OL].[2012-4]./android/example/19.htmlKeywordsSoftwareEngineering,Android,MobileDevelopment,EfficientEncoding,StandardEncoding,Deve
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微積分 第3版 課件 5.2 換元積分法
- 外陰腫瘤課件教學(xué)課件
- 地鐵與輕軌 知識(shí)點(diǎn)提綱與復(fù)習(xí)資料 同濟(jì)大學(xué)
- 老人扶養(yǎng)協(xié)議書(2篇)
- 南京航空航天大學(xué)《電磁頻譜認(rèn)知智能前沿導(dǎo)論》2023-2024學(xué)年期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《線性代數(shù)(理工)》2022-2023學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《設(shè)計(jì)思潮與設(shè)計(jì)理念》2023-2024學(xué)年第一學(xué)期期末試卷
- 蹲踞式起跑說課稿初中
- 織金縣城關(guān)鎮(zhèn)楊柳河廉租房A棟(126套)工程施工組織設(shè)計(jì)
- 南京工業(yè)大學(xué)浦江學(xué)院《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》2022-2023學(xué)年期末試卷
- 《地產(chǎn)公司圖紙管理辦法》的通知
- 中華民族共同體概論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 世界慢阻肺日
- 2024年資格考試-CPSM認(rèn)證考試近5年真題附答案
- 混料機(jī)的安全操作規(guī)程有哪些(8篇)
- 期中 (試題) -2024-2025學(xué)年譯林版(三起)英語六年級(jí)上冊(cè)
- 2024秋期國(guó)家開放大學(xué)《財(cái)務(wù)報(bào)表分析》一平臺(tái)在線形考(作業(yè)一至五)試題及答案
- 國(guó)家基本醫(yī)療保險(xiǎn)、工傷保險(xiǎn)和生育保險(xiǎn)藥品目錄(2023年)
- 城市公益公墓區(qū)建設(shè)方案
- 第七單元測(cè)試卷-2024-2025學(xué)年語文三年級(jí)上冊(cè)統(tǒng)編版
- 智能網(wǎng)聯(lián)汽車電子電氣架構(gòu)產(chǎn)業(yè)技術(shù)路線圖
評(píng)論
0/150
提交評(píng)論