開發期品質 節選自《聞缺陷則喜》(此書可免費下載)

1.1     開發期品質

1.1.1 可理解性

一,盡量使用成熟的技術、方法,除非優勢非常大。新技術要花時間學習,新方法要詳細斟酌、測試。二,分析、設計時消除偶發複雜性、簡化根本複雜性。三,除小函數的局部變數外,變數和函數命名要符合規範。四,單一職責原則,一個函數、一個類、一個模組、一個項目只完成一個任務。五,可理解性是逐步降低的,所以仔細單元測試,盡量早發現缺陷,每次多發現缺陷,減少修改次數。六,完善測試用例和自動化測試用例,這使得經常優化程式碼成為可能。

1.1.2 可測試性

一,可觀察性,是否可以觀察中間和最後的測試結果。比如:a,日誌、dump文件。b,自動檢測報告可能的錯誤。小段子「測試完成,沒彈出異常。」二,可控制性:是否可以將待測元件的狀態控制到如測試條件要求。比如:某個狀態無法或難以達成時,可以開發適用工具直接更改狀態。比如:程式異常退出不丟失數據。可隔離性:待測元件是否可以隔離測試 。四,是否方便自動化測試。

 

1.1.3 可修改性

一,局部化修改。包括:a,分層、分塊以減少相互影響。b,減少依賴,比如使用介面。c,利用泛化、繼承等增強可復用性。d,限制參數選擇。二,防止連鎖反應。a,資訊隱藏。b,維持現有介面。c,限制通訊路徑。d,使用中介或適配器處理關係。三,推遲綁定時間。a,運行時註冊(即插即用)。b,通過配置、腳本增強靈活性。c,多態性。d,可插拔性。

1.1.4 可復用(重用)性

按復用層次,可以分為:

  • 程式碼級,直接複製程式碼。缺點:一,需要修改多處,難以保證一致性。二,無法保護源碼。
  • 模組級(類、函數),直接插入文件。缺點:無法保護源碼。
  • 類庫、組件、平台。優點:經過測試且無法擅自修改。
  • 復用整個功能,如:直接用命令行啟動程式,利用com、ocx、服務調用其它完整程式。
  • 模式、思想、規章、規範、方法復用,如:架構模式、設計模式。

1.1.5 可擴展性

簡單設計,不要為了擴展而擴展,按架構設計的可擴展性要求進行設計。過度設計不但浪費開發人員的時間,還浪費測試人員、實施人員的時間,還增加用戶學習、使用的難度。常見可擴展性包括:

  • 使用介面,如:函數指針、模板、函數對象、抽象類。
  • 使用配置甚至腳本。
  • 開發二次開發SDK和插件。
  • 使用通用技術,如:SQL語句。

1.1.6 可移植性

可移植性指的是:當環境發生變化時,程式進行少量修改就可以運行。環境變化包括但不限於:一,作業系統發生變化。二,硬體發生變化,由於作業系統屏蔽了硬體細節,所以這種情況並不多。三,數據結構發生變化。比如:資料庫類型更換,圖片格式由bmp變成png。四,宿主軟體發生變化,如:瀏覽器變化,AutoCAD變成中望CAD。

增加可移植性的方法:一,分層、分塊,有些部分天然容易移植,有些天然難移植。二,使用標準方法,比如:程式語言的標準部分,SQL的標準部分。三,通訊協議使用通用方法,比如:JSON。