1.可維護(hù)性 代碼的可維護(hù)性和可擴(kuò)展性的第一責(zé)任在架構(gòu),因?yàn)榧軜?gòu)要做相關(guān)的分析模型,劃分相關(guān)的單元模塊和接口,考慮組件和復(fù)用等各方面的問(wèn)題. 架構(gòu)設(shè)計(jì)是高層次的往往只抽象出相關(guān)的類和包,對(duì)于每一個(gè)類中應(yīng)該設(shè)計(jì)哪些方法和函數(shù),并如何組織這些方法和子函數(shù)的調(diào)用關(guān)系,還必須進(jìn)行詳細(xì)設(shè)計(jì),這是編碼的可維護(hù)性和可擴(kuò)展性的兩個(gè)最基礎(chǔ)的內(nèi)容. 能夠準(zhǔn)確表達(dá)代碼實(shí)現(xiàn)意圖的言簡(jiǎn)意駭?shù)淖⑨屖窃创a可讀性的一個(gè)重要內(nèi)容.好的源代碼應(yīng)該是可以自解釋的,因此注釋不應(yīng)該太多也不應(yīng)該全是些照字面翻譯語(yǔ)句的垃圾注釋.注釋的量一般占代碼總量的10-20%就可以了(如果注釋量超過(guò)30% 說(shuō)明垃圾注釋太多,代碼的自解釋性不好很多應(yīng)該拆分為子函數(shù)的沒(méi)有拆分等原因).源代碼文件的文件頭要有注釋說(shuō)明整個(gè)類的實(shí)現(xiàn)功能和流程,調(diào)用多個(gè)子函數(shù)的主方法方法頭要有明確的實(shí)現(xiàn)意圖和調(diào)用步驟的注釋(很重要),以方便維護(hù)人員和自己閱讀代碼. 方法和變量命名等要嚴(yán)格遵守相關(guān)的編碼規(guī)范進(jìn)行命名.名稱不要怕長(zhǎng),名稱要能夠完全的體現(xiàn)出方法所實(shí)現(xiàn)的功能.如根據(jù)某一客戶編號(hào)查詢其的所有定單,則GetInfo, GetOrderInfo等不是最好的方法名.而應(yīng)該采用GetOrderInfoByCustomerNo,通過(guò)這種方法名稱即使不加任何注釋其它人員也可以很好的閱讀你寫(xiě)的代碼. 一個(gè)類文件建立代碼行不易超過(guò)2000行,超過(guò)2000行都應(yīng)該拆分相關(guān)的擴(kuò)展類或Helper類.在一個(gè)類文件中一個(gè)方法或函數(shù)不易超過(guò)50行,超過(guò)50行的可以考慮拆分相關(guān)的子函數(shù).但這個(gè)規(guī)則也需要靈活考慮,比如對(duì)于一些數(shù)據(jù)有效性或完整性判斷的函數(shù),超過(guò)50行一般不會(huì)存在任何問(wèn)題. 每個(gè)軟件開(kāi)發(fā)項(xiàng)目開(kāi)發(fā)前都應(yīng)該定義相關(guān)的編碼約定或規(guī)范,該文件包含了命名,縮進(jìn),注釋,布局等各方面的內(nèi)容,在此就不再做過(guò)多的敘述. 2.可擴(kuò)展性 編碼可擴(kuò)展性的源頭是需求的可擴(kuò)展性,首先需求人員要在需求分析過(guò)程中分析出哪些需求是易變化或會(huì)擴(kuò)展的需求.只有需求考慮到了可擴(kuò)展性,架構(gòu)在設(shè)計(jì)過(guò)程中才能夠有針對(duì)性的進(jìn)行設(shè)計(jì),否則只能夠后期對(duì)代碼進(jìn)行重構(gòu)來(lái)實(shí)現(xiàn)源代碼的可擴(kuò)展性. 可擴(kuò)展性基于原有的經(jīng)驗(yàn)積累和他人的最佳實(shí)踐.充分理解面向?qū)ο蠓治龊驮O(shè)計(jì)的思想和重要的設(shè)計(jì)模式.設(shè)計(jì)模式的精髓就是面向接口設(shè)計(jì),而這個(gè)也是保持代碼的可擴(kuò)展性的一個(gè)重要思路.另外在面向結(jié)構(gòu)方法中我們對(duì)數(shù)據(jù)表的字段或方法參數(shù)預(yù)留一些擴(kuò)展字段也是常用的支持系統(tǒng)擴(kuò)展的方法.好的擴(kuò)展性的判斷準(zhǔn)則有 a.設(shè)計(jì)到需求變更或新需求時(shí)候或是新增類文件或是新增方法,而不是對(duì)已經(jīng)有的多個(gè)源代碼文件造成影響 b.設(shè)計(jì)一些簡(jiǎn)單的擴(kuò)展時(shí)候,可以靈活的通過(guò)配置文件來(lái)實(shí)現(xiàn)而基本不用修改源代碼 我們對(duì)需求的理解也是逐漸細(xì)化的過(guò)程,因此一開(kāi)始就得到完全健壯的代碼是很難的,通過(guò)需求的不斷細(xì)化和需求的變更來(lái)Review我們的代碼實(shí)現(xiàn),適時(shí)而不斷的對(duì)代碼進(jìn)行重構(gòu)才可能得到健壯和可擴(kuò)展的代碼. 3.安全性 安全性仍然屬于代碼內(nèi)在質(zhì)量的一個(gè)內(nèi)容.但平時(shí)在開(kāi)發(fā)過(guò)程中往往并不會(huì)特別注意代碼的安全性.對(duì)于軟件系統(tǒng)的安全性基本可以專門(mén)開(kāi)專題來(lái)討論,在這里僅僅簡(jiǎn)要說(shuō)明一下. 首先是源代碼應(yīng)該防止被反編譯,相關(guān)的重要數(shù)據(jù)和數(shù)據(jù)庫(kù)連接串等信息都應(yīng)該加密進(jìn)行存放.其實(shí)是在分布式應(yīng)用中要注意數(shù)據(jù)傳輸?shù)陌踩?防止數(shù)據(jù)被非法獲取.對(duì)于暴露的遠(yuǎn)程服務(wù)要注意身份認(rèn)證和識(shí)別,防止他人偽造客戶端進(jìn)行調(diào)用.其次整個(gè)系統(tǒng)應(yīng)該有完善的權(quán)限模型,除了最簡(jiǎn)單的業(yè)務(wù)功能權(quán)限外,還應(yīng)該根據(jù)需要對(duì)系統(tǒng)中相關(guān)的業(yè)務(wù)對(duì)象有完善的靜態(tài)權(quán)限和動(dòng)態(tài)權(quán)限的控制機(jī)制. 4.系統(tǒng)的健壯性 系統(tǒng)的健壯性比較重要的一點(diǎn)就是系統(tǒng)對(duì)異常的捕獲和處理能力.因此對(duì)于一個(gè)軟件系統(tǒng)應(yīng)該有完善和獨(dú)立的異常處理和日志記錄機(jī)制.當(dāng)出現(xiàn)不可預(yù)見(jiàn)的錯(cuò)誤時(shí)候不會(huì)導(dǎo)致整個(gè)軟件系統(tǒng)或操作系統(tǒng)的崩潰.同時(shí)系統(tǒng)還需要記錄足夠的異常和日志信息,以方便后續(xù)維護(hù)人員對(duì)問(wèn)題進(jìn)行跟蹤和分析. 開(kāi)發(fā)人員在代碼編寫(xiě)過(guò)程中要注意異常的捕獲,對(duì)于多層分布式架構(gòu)應(yīng)該在每層都有相關(guān)的異常處理代碼,同時(shí)要分清楚哪些異常屬于當(dāng)前層的異常應(yīng)該進(jìn)行處理和屏蔽,哪些異常應(yīng)該向上一層
|