防禦性編碼有助於快速定位問題

        防禦性編碼與其說是一種編碼風格,不如說是一種編碼習慣。
        每個人都負責“自己”的模塊,然後與“別人”的模塊發生各種關聯,進而實現需求。在這樣的複雜環境下,每個模塊都會形成一些假設,也就是前置條件。只有前置條件被滿足,才能按預期正常工作。這些前置條件有些是有明確的協議的,但無明確協議的往往佔據了大多數,與“別人”之間的調用關係是通過口頭約定來進行的,或者沒有約定,只是一個假設。
        要想讓“自己”的模塊不被這種情況傷害得更深,就需要進行一些有意識的防禦,對不符合前置條件的情況進行快速反饋,對可以預見到的陷阱進行主動防守,通過明確的預期行爲來代替運行時的不確定性,可以爲問題跟蹤帶來非常大的便利,提升開發效率。
        常見的防禦手段包括:
  1. 對空指針的防禦。這是最常見的方法,不再展開。
  2. 利用運行時異常進行業務層面的防禦。對運行時可能產生的不滿足業務條件的情況進行運行時異常拋出。
  3. 利用異常重試機制對外在環境的不可控變化進行防禦,以增強健壯性。比如寫文件時的IO異常可以做重試處理。
  4. 利用斷言在開發階段及早發現非預期狀態。
        以上不是全部,但也要防止過量使用,導致代碼中到處都是這種語句,影響對業務邏輯的理解,甚至影響運行效率。
        一般而言,“自己”模塊對外的界面的界面會多采用防禦性編碼,作爲對前置條件的驗證。模塊內部,由於是自己的實現邏輯,只要可控,可以減少這種編碼,但對調用其他模塊的返回值可以有意識的增加防禦。

——歡迎轉載,請註明原文出處 http://blog.csdn.net/caowenbin ——
——歡迎關注微信號“曹文斌的軟件思考”,共同探討軟件人生——

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章