溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++中怎么使接口清晰明確

發(fā)布時(shí)間:2021-11-26 13:49:11 來源:億速云 閱讀:132 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“C++中怎么使接口清晰明確”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

I.1: Make interfaces explicit(使接口清晰明確)

Reason(原因)

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}
It will not be obvious to a caller that the meaning of two calls o
f round(7.2) might give different results.
調(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í)用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

c++
AI