您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“C++中怎么使接口清晰明確”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Correctness. Assumptions not stated in an interface are easily overlooked and hard to test.
正確性。在接口中沒有說明的假設(shè)很容易被忽視且難于測試。
Example, bad(反面示例)
通過全局(命名空間范圍)變量(調(diào)用模式)控制函數(shù)行為的方式是隱晦且不易理解的,例如:
int round(double d){ return (round_up) ? ceil(d) : d; // don't: "invisible" dependency}
調(diào)用者不容易理解兩次調(diào)用round(7.2)可能返回不同的結(jié)果。
Exception(例外)
有時(shí)我們通過環(huán)境變量控制一套操作的細(xì)節(jié)。例如,正常輸出還是詳細(xì)輸出,也可能是調(diào)試還是優(yōu)化。使用非局部控制的做法可能會(huì)難于理解,只可以應(yīng)用在其他固定語義的實(shí)現(xiàn)細(xì)節(jié)的情況。
Example, bad(反面示例)
Reporting through non-local variables (e.g., errno
) is easily ignored.
For example:
通過非局部變量報(bào)告(例如錯(cuò)誤編碼)很容易被忽略。例如:
// don't: no test of printf's return valuefprintf(connection, "logging: %d %d %d\n", x, y, s);
如果連接被關(guān)閉而導(dǎo)致沒有日志輸出怎么辦?
Alternative: Throw an exception. An exception cannot be ignored.
可選項(xiàng):拋出異常。異常不會(huì)被忽略。
另一種說法:避免會(huì)用非局部或隱含狀態(tài)通過接口傳遞信息。注意非const成員通過對(duì)象狀態(tài)函數(shù)向另外一個(gè)成員函數(shù)傳遞信息的情況。
另一種說法:接口應(yīng)該是一個(gè)或一組函數(shù)。接口可以是模板函數(shù),函數(shù)組可以是類和類模板。
Enforcement(實(shí)施建議)
(Simple) A function should not make control-flow decisions based on the values of variables declared at namespace scope.
(簡單)函數(shù)不應(yīng)該根據(jù)命名空間范圍中的變量決定控制流。
(Simple) A function should not write to variables declared at namespace scope.
(簡單)函數(shù)不應(yīng)該改寫定義于命名空間范圍的變量。
“C++中怎么使接口清晰明確”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。