如何提升項目代碼質(zhì)量?

1.??? 23種設(shè)計模式

2.??? 代碼規(guī)范(OC與禪)

3.?? 標準

1. 正確性(Correctness) 系統(tǒng)滿足規(guī)格說明和用戶目標的程度,即在預定環(huán)境下能正確地完成預期功能的程度。 如軟件有沒有按照需求規(guī)格來完成,計算出的結(jié)果是否正確,計算結(jié)果是否精確。

2.健壯性/魯棒性(Robustness) ?? 健壯性是指在異常情況下如硬件發(fā)生故障、輸入的數(shù)據(jù)無效或操作錯誤等軟件能夠正常運行的能 力。 健壯性有兩層含義:一是容錯能力,二是恢復能力。 容錯是指發(fā)生異常情況時系統(tǒng)不出錯誤的能力,對于應用于航空航天、武器、金融等領(lǐng)域的這類高風險 系統(tǒng),容錯設(shè)計非常重要。 而恢復則是指軟件發(fā)生錯誤后(不論死活)重新運行時,能否恢復到?jīng)]有發(fā)生錯誤前的狀態(tài)的能力。 例如:因輸入數(shù)據(jù)不正確,引起系統(tǒng)異常,這是容錯能力不高引起的健壯性問題;操作系統(tǒng)死機了,重 啟后能夠正常使用,說明具有一定恢復能力,具有一定的健壯性;數(shù)據(jù)庫發(fā)生故障后,再次啟動時一般能 夠恢復到正常的狀態(tài),恢復能力比較好。

3. 可靠性(Reliability) 軟件系統(tǒng)在一定的時間內(nèi)無故障運行的能力。 可靠性是一個與時間相關(guān)的屬性,指的是在一定環(huán)境下,在一定的時間段內(nèi),程序不出現(xiàn)故障的概率, 因此是一個統(tǒng)計量,通常用平均無故障時間(MTTF, mean-time to fault)來衡量。 可靠性不同于正確性和健壯性,軟件可靠性問題通常是由于設(shè)計中沒有料到的異常和測試中沒有暴露的 代碼缺陷引起的。 例:由于某個地方數(shù)據(jù)庫連接沒有釋放,在長時間運行的時候,出現(xiàn)活動的數(shù)據(jù)庫連接數(shù)過多,造成系 健壯性/魯棒性(Robustness) 健壯性是指在異常情況下(如硬件發(fā)生故障、輸入的數(shù)據(jù)無效或操作錯誤等),軟件能夠正常運行的能統(tǒng)越來越慢,甚至系統(tǒng)停止服務。?

4. 性能(Performance) 性能是指軟件及時提供相應服務的能力。 具體而言, 性能包括速度、 吞吐量和持續(xù)高速性三方面的要求: 速度往往通過平均響應時間來度量; 吞吐量通過單位時間處理的交易數(shù)來度量; 持續(xù)高速性是指保持高度處理速度的能力。 效率(Efficiency)指軟件對CPU 處理能力和存儲能力這兩大類計算機資源的使用效率。效率和性能反 映了同一問題的“表”、“里”,性能為“表”,效率為“里”。 如系統(tǒng)運算一個報表,需要很長時間,這就是性能問題。

?5.安全性(Security) 指軟件同時兼顧向合法用戶提供服務,以及阻止非授權(quán)使用軟件及資源的能力。 安全性既屬于技術(shù)問題又屬于管理問題。一般地,如果黑客為非法入侵花費的代價(考慮時間、費用、 風險等多種因素)高于得到的好處,那么這樣的系統(tǒng)就可以認為是安全的。 例:有人可以訪問非授權(quán)的資源,這就是安全性問題。

?6.易用性(Usability) 易用性是指用戶使用軟件的容易程度。 軟件的易用性要讓用戶來評價。 例:對于一般用戶而言,Windows 的易用性比Linux 的高。

7. 可用性(Availability) 指的是產(chǎn)品對用戶來說有效、易學、高效、好記、少錯和令人滿意的程度,即用戶能否用軟件完成他的 任務,效率如何,主觀感受怎樣。ISO 9241-11 國際標準對可用性作了如下定義:產(chǎn)品在特定使用環(huán)境下為特定用戶用于特定用途時所具 有的有效性(effectiveness)、效率(efficiency)和用戶主觀滿意度(satisfaction)。其中: 有效性:用戶完成特定任務和達到特定目標時所具有的正確和完整程度; 效率:用戶完成任務的正確和完整程度與所使用資源(如時間)之間的比率; 滿意度:用戶在使用產(chǎn)品過程中所感受到的主觀滿意和接受程度。

?8.互操作性(Interoperability) 指本軟件與其他系統(tǒng)交換數(shù)據(jù)和相互調(diào)用服務用以協(xié)同運作的難易程度。 例:利用 Web

Service 增加軟件的互操作性。?

9. 易理解性(Understandability) 理解和使用系統(tǒng)的難易程度。

?10.可擴展性(Extensibility)/靈活性(Flexibility)/適應性(Adaptability)/可伸縮性(Scalability) 反映軟件適應“變化”的能力。調(diào)整、修改或改進正在運行的軟件系統(tǒng)以適應新需求、變化了的需求 的難易程度。 例:如報銷系統(tǒng)原來不需要總經(jīng)理審批,現(xiàn)在要改為總經(jīng)理審批,可擴展性強的系統(tǒng)不需要作太多 調(diào)整;如用戶和數(shù)據(jù)量增加時,通過增加服務器來提高系統(tǒng)性能,這樣可伸縮性比較強。

?11.可重用性(Resuability) 重用軟件或其中一部分的難易程度。

?12.可測試性(Testability) 對軟件測試以證明其滿足需求規(guī)約的難易程度。?

13. 可維護性(Maintainability) 為修改 Bug、增加功能、提高質(zhì)量而診斷并修改軟件的難易程度。

?14.可移植性(Portability) 軟件不經(jīng)修改或稍加修改就可以運行于不同軟硬件環(huán)境的難易程度,主要體現(xiàn)為代碼的可移植性。


?? 4.原則(六大原則)

單一職責原則:實現(xiàn)類要職責單一;

里氏替換原則:不要破壞繼承體系;

依賴倒置原則:面向接口編程;

接口隔離原則:設(shè)計接口的時候要精簡單一;

迪米特法則:降低耦合;

?5.具體實施

??? 前期以代碼抽查為主,后期加入機器檢測(搭建基于Sonar的iOS代碼質(zhì)量檢測系統(tǒng))。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 高級鉗工應知鑒定題庫(858題) ***單選題*** 1. 000003難易程度:較難知識范圍:相關(guān)4 01答案:...
    開源時代閱讀 6,306評論 1 9
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評論 25 709
  • 說的很多,做的很少;想的很多,寫的太少…… 一直以來,都有想過把寫作當成一種習慣,卻由于這樣或者那樣的原因,寫寫停...
    freshtime閱讀 231評論 0 0
  • 這本書的世界觀有點模糊,案件全部發(fā)生在人類社會中,案件比較詭異,但罪魁禍首無一例外仍舊是人。 所以,這個小說有點文...
    梅刃蘇閱讀 10,729評論 0 1
  • 自己來貼手機膜會是怎樣的心情?我猜是這樣的 ▼ 本來自信滿滿的想貼膜這件事得多難??!于是便開始自己去貼,緊接著整個...
    生活技藝坊閱讀 1,229評論 6 19

友情鏈接更多精彩內(nèi)容