程序員面試必考題(二十二):Java中的前置條件和后置條件

轉載自微信公眾賬號:開點工作室(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)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,662評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,785評論 18 139
  • 2.2 子曰:“《詩》三百,一言以蔽之,曰‘思無邪’。” 孔子說:“《詩經》三百篇,用一句話來概括它,就是‘思想純...
    須彌兒閱讀 303評論 0 0
  • 那些年,你我手拉著手仰望藍天白云,背靠著背沐浴冬日暖陽,你騎著單車載著我游遍大街小巷,我輕拉著你的衣角為你獻上最動...
    左安520184閱讀 378評論 0 1