Program by constract and Defensive programming

program by constract(按契約程式設計)就是寫 code 跟用那份 code 的人說好,這些 function 要做什麼、負責什麼、使用的人要怎麼用,大家照說好的去做。

defensive programming(防禦性程式設計)則是大家互相不信任,會做許多檢查以確保自己不會當掉、使用的人用錯也不會當。defensive programming 會產生許多用於檢查的 code,讓 code 變得冗長、效率也可能較差,所以一般建議在 input 要進入系統時做檢查,系統內部互相 call 時就不再做檢查。當檢查發現問題、出現不該出現的錯誤時,較建議盡快讓程式 fail 好找出錯誤,而非忽略錯誤、繼續讓系統執行下去。

Ref