c++ 使用強大的typedef作為Boost引數庫的更輕便的替代品?
我經常使用Boost強typedef實用程式來提高我的程式的安全性.例如通過編寫如下程式碼:
BOOST_STRONG_TYPEDEF(int, X) BOOST_STRONG_TYPEDEF(int, Y) BOOST_STRONG_TYPEDEF(int, Width) BOOST_STRONG_TYPEDEF(int, Height) struct Rect { Rect(X x, Y y, Width w, Height h); }; // Usage: Rect rect(X(10), Y(20), Width(800), Height(600));
強大的typedef這裡提高了程式碼的可讀性和安全性. (如果以錯誤的順序提供引數,編譯器將報告一個錯誤,如果引數都是int,則不會出現這種情況)
我的問題是:
>為此可以使用BOOST_STRONG_TYPEDEF嗎? (文件是ofollow,noindex" target="_blank">very brief .)
>有更重要的原因是改用boost引數庫嗎?
從技術上講:
>它的工作原理
它增加了安全性
實際上
我不建議建立新的型別,只是為了單個函式的引數(除非它是一個特定於此函式的列舉),型別應該滲透到應用程式中,以避免使用一次又一次的轉換.
如果在整個應用程式中使用X,Y,Width和Height型別,那麼不僅不會有演員,而且您的應用程式將會更安全,更好地記錄在案(是的…我是一個型別怪胎).
現在,關於Boost.Parameters,這是完全不同的.
Boost.Parameters可以(可能)在您已經有型別的時候被新增.老實說,我從來沒有看到需要.當您的功能變得如此笨重,Boost.Parameters需要呼叫它們時,您應該修復功能,而不是新增到雜亂.
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/9211210/using-strong-typedef-as-a-more-lightweight-alternative-to-boost-parameter-librar