轉載自微信公眾賬號:開點工作室(ID:kaidiancs)
Java程序中,程序員可以使用前置條件與后置條件,來控制是否執行方法及判斷方法是否正確執行。
前置條件(precondition)是一條條件語句,在方法執行前必須為真。除非前置條件滿足,否則不應該使用方法,也不能期待方法能正確執行。前置條件可以與方法參數的描述相關。例如,計算x平方根的方法可以用x≥0作為前置條件。
后置條件(postcondition)是一條語句,當前置條件滿足且完全執行方法后,它為真。對于一個值方法,后置條件將描述方法返回的值。對于一個void方法,后置條件描述所做的動作及對調用對象的任何修改。一般地,后置條件描述方法調用產生的所有影響。考慮后置條件可以有助于弄清楚方法的目的。
注意:不能滿足后置條件的方法,即使符合前置條件,也可以拋出異常。
前置條件意味著職責,要保證必須滿足特定條件。如果在調用方法前由客戶負責滿足條件,則方法不必檢查條件。或者,如果方法負責讓條件成立,則客戶不必檢查它們。例如,要規范說明一個求平方根的方法,可以在方法頭前面寫如下的注釋:
/** Computes the square root of a number.
@param x A real number >= 0.
@return The square root of x.
*/
這個注釋表明,方法假定客戶要提供一個非負數作為參數。
更安全的技術是讓方法承擔檢查參數的責任。例如它的注釋應該如下:
/** Computes the square root of a number.
@param x A real number.
@return The square root of x if x >= 0.
@throws ArithmeticException if x < 0.
*/
雖然在前面的注釋中我們將前置條件和后置條件集成在一起,不過也可以將它們單獨分開。
程序設計技巧:在方法頭之前的注釋中充分說明每個公有方法。對于確保方法能正確執行而必須滿足的條件,要說明是由方法還是由客戶來負責進行檢查。以這種方式,既做了檢查又不會重復檢查。但在調試過程中,方法應該檢查前置條件是否滿足。
當使用繼承和多態來重寫父類中的一個方法時,子類中的方法可能會出現與父類中的方法不一致的問題。前置條件和后置條件可以幫助程序員避免這個問題。后置條件必須適用于子類中方法的所有版本。重寫的方法可以添加到后置條件中——即它能做的更多——但不能做的更少。不過重寫的方法不能增加其前置條件。換句話說,它不能比基類中的方法要求得更多。
由開點工作室編寫,清華大學出版社出版的《橫掃offer---程序員招聘真題詳解700題》一書已經在天貓、京東等各大網上書店及實體書店開始發售。本書精心選取了700道各IT名企程序員招聘筆試面試的真題,書中內容按照目前各主流IT企業技術類招聘考試試題所涉及到的專業知識領域,劃分為8章:第1章為C語言程序設計,第2章為面向對象程序設計,第3章為數據結構與算法,第4章為計算機組成原理,第5章為操作系統,第6章為計算機網絡,第7章為數據庫系統,第8章為數學與邏輯。各章直接對招聘考試真題展開解析,將試題涉及到知識點進行精準地歸納和深入地闡述,而省去了與之不相關教材內容的堆砌,確保應聘者的學習更加有針對性。我們希望本書的讀者能夠把書中每一道試題的解析讀懂、吃透,從而牢固掌握試題所涉及到相關知識的內涵、外延和綜合應用,真正做到舉一反三。同時,本書專注于計算機專業技術試題的分析講解,不涉及性格測試、智力測驗、常識測試、英語測試以及面試禮儀等非技術領域內容,真正做到“沒有雞湯,全是干貨”。
“撥開學習中的荊棘迷霧,指點探索中的靈感思路”,希望這本凝結了集體智慧和心血的教材,能夠充分體現開點工作室的創作主旨,為廣大IT求職者提供真正的幫助。希望每一名熱愛這個行業,充滿熱情和力量的年輕人都能夢想成真。
更多計算機學習技術文章請關注微信公眾賬號:開點工作室(ID:kaidiancs)