我有一個關於我的C++類設計的問題。通常我會遇到這樣的小問題,我希望得到一些有關更好接受的建議。基本的C++設計
我有一些類通過UDP監視某些設備的溫度。如果設備收到一個數據包,它將打印「x \ n」給標準輸出以表明它收到了一些東西。然後檢查該數據包中的數據並確認數據未顯示設備溫度過高。如果它太高,我必須調用一些函數。如果不是,我必須調用其他函數。
我不知道我是否應該這樣做:
enum temperature {TEMPERATURE_FINE, TEMPERATURE_EXCEEDED};
int main(int argc, char* argv[])
{
std::vector<std::string> args(argv+1, argv + argc);
if(!args.size())
cout << "No parameters entered.\n";
else
{
CTemperatureMonitor tempMonitor(args);
if(tempMonitor.MonitorTemperature() == TEMPERATURE_EXCEEDED)
tempMonitor.ActivateAlarm();
else
tempMonitor.DisableAlarm();
}
return 0;
}
其中tempMonitor.MonitorTemperature()調用std::cout << "x\n"
。所以std::cout << "x\n"
是內置到課堂上。
或者:其中不包含在類std::cout << "x\n"
enum temperature {TEMPERATURE_FINE, TEMPERATURE_EXCEEDED};
int main(int argc, char* argv[])
{
std::vector<std::string> args(argv+1, argv + argc);
if(!args.size())
cout << "No parameters entered.\n";
else
{
CTemperatureMonitor tempMonitor(args);
temperature tempExceeded = tempMonitor.MonitorTemperature();
std::cout << "x\n";
if(tempExceeded == TEMPERATURE_EXCEEDED)
tempMonitor.ActivateAlarm();
else
tempMonitor.DisableAlarm();
}
return 0;
}
。
std::cout << "x\n"
必須在致電CTemperatureMonitor::ActivateAlarm()
和CTemperatureMonitor::DisableAlarm()
之前發生。
我知道這看起來確實輕微的,簡單的,但我常常不知道究竟應該是類的一部分。班級應該輸出到stdout嗎?無論我是做一個還是另一個,這會有什麼區別嗎?我是否對此迂腐?
而且,順便說一句,我知道全局變量被認爲是不良的做法。我使用主體和類中的溫度枚舉。我是否應該在CTemperatureMonitor類中聲明兩次,一次在main中,一次或在全局聲明一次?雖然這個問題看起來很具體,但它確實會爲我清除很多其他問題。
謝謝。
想想單一責任,最小耦合,模塊化和可重用性。 – 2012-02-19 12:21:05
對我來說,它取決於它上面的'x'行是幹什麼的。如果它與溫度狀態有關,它將在CTemperatureMonitor類中。如果它只是針對不同事物的分工,我會把它放在課外。 – 2012-02-19 12:22:23
它只是說,「我收到了一個包」。沒有更多,沒有更多。 – 2012-02-19 12:29:05