[英]C++ reader function design: helper functions, class, private, over-engineering?
在C ++中,我想實現一個閱讀器功能,即只執行一次,返回某些內容然后消失的方法。 讀取過程有點復雜,所以我認為我最好將其拆分為一個read(filename)
和幾個幫助函數。 為了確保它們不會被意外訪問,我認為我將整個內容包裝在一個無狀態的類中,並將那些輔助函數標記為私有。 但是,這產生了代碼開銷,即必須先創建閱讀器類的實例,然后在其上調用read(filename)
。 好了,讓我們創建一個幫助器函數,創建一個所述類的實例,調用read(filename)
,將其轉儲並返回讀取的輸出。
class Reader
{
public:
Reader();
virtual
~Reader();
OutputData
read(const std::string & fileName);
private:
helper1_();
helper2_();
helper3_();
};
OutputData
ReadIt(const std::string & fileName)
{
Reader r();
OutputData out = r.read(fileName);
return out;
}
嗯,這有點工程化了。 您對此有何看法?
聽起來不錯,但是如果您只需要一組沒有狀態的獨立幫助程序函數,則最好使用自由函數並將其隱藏在實現中是一個更好的主意。 一種方法是將所有幫助程序放在實現文件中的匿名名稱空間中。
頭文件:
namespace Reader {
OutputData reatIt(const std::string& filename);
} // Reader namespace
實施文件
namespace Reader {
namespace {
void helper1_() { .... }
void helper2_() { .... }
void helper3_() { .... }
} // anonymous namespace
readIt(const std::string& filename) {
// use helpers here. Client code will never know.
}
} // Reader namespace
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.