Item 18 不易誤用的介面

2021-05-25 14:29:20 字數 506 閱讀 9312

● 用型別限制使用者

重新設計介面:

如果想限制使用者對月份的誤用,可以用類:

● 防止客戶寫出下面**的方法,是用const限制operator*的返回值

if (a * b = c) ... // 其實想寫成 (a * b == c)

● 如果要求客戶必須記住,那麼他們就有可能忘記

比如申請資源的釋放,強制使用者使用智慧型指標管理:

std::tr1::shared_ptrcreateinvestment();

可以為shared_ptr指定乙個deleter,該deleter會在引用計數為零時自動呼叫。

比如有個函式getridofinvestment作為deleter傳給shared_ptr的某個ctor:

當然,如果能直接把正確的指標給shared_ptr的ctor更好。

● shared_ptr來自boost,是原始指標的兩倍大;動態分配記憶體;以virtual形式呼叫deleter;支援多執行緒環境下修改引用計數。

18 讓介面容易被正確使用,不易被誤用

1 所謂軟體設計,就是 讓軟體做出你期望它做的事情 的步驟。首先是構想,考慮對外暴露的介面,然後實現。2 客戶沒有正確使用自己提供的介面,自己也要負擔一部分責任,思考自己的介面是不是簡單明瞭,容易理解。3 對於多個形參的介面,最好表明每個形參的型別和有效範圍。4 盡量限制哪些事能做,哪些事不能做,盡...

條款18 讓介面容易被正確使用,不易被誤用

條款18 讓介面容易被正確使用,不易被誤用 make inte ces easy to use correctly and hard to use incorrectly.內容 假設現在的你需要提供一些介面給你的客戶去使用,而現在的你沒有任何這個方面的經驗,那麼你就要考慮 下面這些情況的發生 1 你...

讓介面容易被正確使用,不易被誤用 條款18

欲開發乙個 容易被正確使用,不容易被誤用 的介面,首先必須考慮客戶可能做出什麼樣的錯誤。假設你為乙個用來表現日期的class設計建構函式 class date 乍見之下這個介面通情達理 至少在美國如此 但它的客戶很容易犯下至少兩個錯誤。第一,他們也許會以錯誤的次序傳遞引數 date 30,3,199...