我有許多小功能,這是每一個做一個單一的東西例如像做法。最佳處理許多單一功能
它不值得將每個功能包裝到一個類中。
什麼是C++中的最佳實踐來處理這種不同的許多小功能呢?
也許寫一些叫Helper的類,比如NetworkHelpers?
我有許多小功能,這是每一個做一個單一的東西例如像做法。最佳處理許多單一功能
它不值得將每個功能包裝到一個類中。
什麼是C++中的最佳實踐來處理這種不同的許多小功能呢?
也許寫一些叫Helper的類,比如NetworkHelpers?
在namespace
將它們是一種選擇。我不認爲需要上課。一個類的實例是表示一個狀態的意思,但是你正在描述一堆免費函數,所以是一個無狀態系統。 「這是不值得把每個功能都包裝進單一課堂。」 - 這是不作出決定不寫一個類的有效論據。一個類可以有單個成員和一個單一的方法,但是如果它背後有邏輯,你應該寫它。
如果你的職責,你的邏輯任務使用的一類,你的函數具有相同的邏輯,但操作因對象的不同,通過各種手段,寫一個類。如果您的唯一目的是將這些函數組合在一起,那麼當它們的邏輯不真正依賴於一個類的同一個實例時,將它們分組到一個名稱空間中。
根據你的問題的一個例子:
namespace NetworkHelpers
{
//free function, use a namespace
bool pingServer(std::string hostname);
}
//alternative, where the object has a state:
class ServerConnection
{
std::string _hostname;
public:
NetworkHelpersClass(std::string hostname)
{
_hostname = hostname;
}
bool pingServer()
{
return NetworkHelpersNamespace::pingServer(_hostname);
}
};
正如你所看到的,命名空間中,該功能不依賴於除參數以外的任何其他。
類裏面,因爲它有一個狀態,你(根據不同的對象如此相似的行爲,但不同)創建一個對象的每個服務器,調用不帶參數的函數作爲對象都有一種狀態。
我希望這說清楚。
與某些語言不同,C++不要求您將每個函數都放在類中。如果你有不屬於類的函數,把它們放在一個名字空間中。 DLL中照看它們的依賴組的功能:
如果我可以添加除名稱空間之外的其他最佳實踐。 避免循環鏈接並儘可能使用最少數量的依賴項創建低級庫。
其中「功能」的意思是「班級」? :) – themel
@themel,是的,只要我點擊發布按鈕,我就編輯了我的答案。 :) –
我會補充一點:當選擇命名空間時,將函數放在同一個命名空間(不是'std')作爲它的一個參數是很好的習慣(顯然,這裏是選擇) 。如果它沒有生存在命名空間中的任何參數(除了'std'),請考慮它的返回類型的命名空間。如果沒有名稱空間invovled ...然後創建一個。 –