轉(zhuǎn)載自微信公眾賬號(hào):開(kāi)點(diǎn)工作室(ID:kaidiancs)
Java程序中,程序員可以使用前置條件與后置條件,來(lái)控制是否執(zhí)行方法及判斷方法是否正確執(zhí)行如蚜。
前置條件(precondition)是一條條件語(yǔ)句,在方法執(zhí)行前必須為真。除非前置條件滿足仁卷,否則不應(yīng)該使用方法,也不能期待方法能正確執(zhí)行犬第。前置條件可以與方法參數(shù)的描述相關(guān)锦积。例如,計(jì)算x平方根的方法可以用x≥0作為前置條件歉嗓。
后置條件(postcondition)是一條語(yǔ)句丰介,當(dāng)前置條件滿足且完全執(zhí)行方法后,它為真鉴分。對(duì)于一個(gè)值方法哮幢,后置條件將描述方法返回的值。對(duì)于一個(gè)void方法志珍,后置條件描述所做的動(dòng)作及對(duì)調(diào)用對(duì)象的任何修改橙垢。一般地,后置條件描述方法調(diào)用產(chǎn)生的所有影響伦糯」衲常考慮后置條件可以有助于弄清楚方法的目的嗽元。
注意:不能滿足后置條件的方法,即使符合前置條件喂击,也可以拋出異常剂癌。
前置條件意味著職責(zé),要保證必須滿足特定條件翰绊。如果在調(diào)用方法前由客戶負(fù)責(zé)滿足條件佩谷,則方法不必檢查條件〖嗍龋或者谐檀,如果方法負(fù)責(zé)讓條件成立,則客戶不必檢查它們秤茅。例如稚补,要規(guī)范說(shuō)明一個(gè)求平方根的方法,可以在方法頭前面寫(xiě)如下的注釋?zhuān)?/p>
/** Computes the square root of a number.
@param x A real number >= 0.
@return The square root of x.
*/
這個(gè)注釋表明框喳,方法假定客戶要提供一個(gè)非負(fù)數(shù)作為參數(shù)课幕。
更安全的技術(shù)是讓方法承擔(dān)檢查參數(shù)的責(zé)任。例如它的注釋?xiě)?yīng)該如下:
/** 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.
*/
雖然在前面的注釋中我們將前置條件和后置條件集成在一起五垮,不過(guò)也可以將它們單獨(dú)分開(kāi)乍惊。
程序設(shè)計(jì)技巧:在方法頭之前的注釋中充分說(shuō)明每個(gè)公有方法。對(duì)于確保方法能正確執(zhí)行而必須滿足的條件放仗,要說(shuō)明是由方法還是由客戶來(lái)負(fù)責(zé)進(jìn)行檢查润绎。以這種方式,既做了檢查又不會(huì)重復(fù)檢查诞挨。但在調(diào)試過(guò)程中莉撇,方法應(yīng)該檢查前置條件是否滿足。
當(dāng)使用繼承和多態(tài)來(lái)重寫(xiě)父類(lèi)中的一個(gè)方法時(shí)惶傻,子類(lèi)中的方法可能會(huì)出現(xiàn)與父類(lèi)中的方法不一致的問(wèn)題棍郎。前置條件和后置條件可以幫助程序員避免這個(gè)問(wèn)題。后置條件必須適用于子類(lèi)中方法的所有版本银室。重寫(xiě)的方法可以添加到后置條件中——即它能做的更多——但不能做的更少涂佃。不過(guò)重寫(xiě)的方法不能增加其前置條件。換句話說(shuō)蜈敢,它不能比基類(lèi)中的方法要求得更多辜荠。
由開(kāi)點(diǎn)工作室編寫(xiě),清華大學(xué)出版社出版的《橫掃offer---程序員招聘真題詳解700題》一書(shū)已經(jīng)在天貓抓狭、京東等各大網(wǎng)上書(shū)店及實(shí)體書(shū)店開(kāi)始發(fā)售伯病。本書(shū)精心選取了700道各IT名企程序員招聘筆試面試的真題,書(shū)中內(nèi)容按照目前各主流IT企業(yè)技術(shù)類(lèi)招聘考試試題所涉及到的專(zhuān)業(yè)知識(shí)領(lǐng)域否过,劃分為8章:第1章為C語(yǔ)言程序設(shè)計(jì)狱从,第2章為面向?qū)ο蟪绦蛟O(shè)計(jì)膨蛮,第3章為數(shù)據(jù)結(jié)構(gòu)與算法,第4章為計(jì)算機(jī)組成原理季研,第5章為操作系統(tǒng),第6章為計(jì)算機(jī)網(wǎng)絡(luò)誉察,第7章為數(shù)據(jù)庫(kù)系統(tǒng)与涡,第8章為數(shù)學(xué)與邏輯。各章直接對(duì)招聘考試真題展開(kāi)解析持偏,將試題涉及到知識(shí)點(diǎn)進(jìn)行精準(zhǔn)地歸納和深入地闡述驼卖,而省去了與之不相關(guān)教材內(nèi)容的堆砌,確保應(yīng)聘者的學(xué)習(xí)更加有針對(duì)性鸿秆。我們希望本書(shū)的讀者能夠把書(shū)中每一道試題的解析讀懂酌畜、吃透,從而牢固掌握試題所涉及到相關(guān)知識(shí)的內(nèi)涵卿叽、外延和綜合應(yīng)用桥胞,真正做到舉一反三。同時(shí)考婴,本書(shū)專(zhuān)注于計(jì)算機(jī)專(zhuān)業(yè)技術(shù)試題的分析講解贩虾,不涉及性格測(cè)試、智力測(cè)驗(yàn)沥阱、常識(shí)測(cè)試缎罢、英語(yǔ)測(cè)試以及面試禮儀等非技術(shù)領(lǐng)域內(nèi)容,真正做到“沒(méi)有雞湯考杉,全是干貨”策精。
“撥開(kāi)學(xué)習(xí)中的荊棘迷霧,指點(diǎn)探索中的靈感思路”崇棠,希望這本凝結(jié)了集體智慧和心血的教材咽袜,能夠充分體現(xiàn)開(kāi)點(diǎn)工作室的創(chuàng)作主旨,為廣大IT求職者提供真正的幫助易茬。希望每一名熱愛(ài)這個(gè)行業(yè)酬蹋,充滿熱情和力量的年輕人都能夢(mèng)想成真。
更多計(jì)算機(jī)學(xué)習(xí)技術(shù)文章請(qǐng)關(guān)注微信公眾賬號(hào):開(kāi)點(diǎn)工作室(ID:kaidiancs)