注意:限制是我不能使用異常(代碼最終編譯時禁用了例外 - 不受我控制)。該項目是一個實時3D圖形應用程序。如何在錯誤檢查期間減少冗餘代碼
我正在使用我自己的錯誤類(我發佈了一個關於這個不太久的問題),每個類都使用它。非常簡單,它只是在函數調用期間記錄錯誤。該函數返回該錯誤,也可以通過調用SomeClass->GetLastError()
來檢查該錯誤。如果是NO_ERROR
(所有枚舉),那麼我們可以繼續,雖然我們可以選擇忽略它(例如,如果一個特定的對象沒有加載,我們可以忽略它,把一個醜陋的粉紅色框放在它的位置並標記錯誤)。在創建State
時調用功能CreateScene()
,然後繼續調用負責創建場景的各種功能。所有這些函數都可能會返回錯誤。那麼,那麼我是這樣的:
if (CreateGrid() != NO_ERROR)
{
mCore->Terimate();
mLog->Error("\n[FATAL] Initialization Failed, check error log");
return;
}
if (SomeOtherFunc() != NO_ERROR)
{
mCore->Terimate();
mLog->Error("\n[FATAL] Initialization Failed, check error log");
return;
}
稱爲可能有不同的函數簽名的功能,所以參數可以是不同的,雖然返回類型始終是一個整數。我有幾個像上面這樣的調用,所以我爲它寫了一個#define
,它接受函數作爲參數,並且與上面的代碼完全相同。所以現在,上面的代碼看起來像:
CALL_FUNC(CreateGrid());
CALL_FUNC(SomeOtherFunc());
一旦我完成了定義,就是undefined。無論如何,這是我能想出的唯一想法。儘管它有一個醜陋#define
生成的代碼是乾淨的。我應該在這裏使用更好的技術嗎?
感謝
我覺得這個堆棧交換[建議](http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2「代碼審查」)可能是你的興趣。如果是顯示你的支持,並幫助它進入測試版:) – greatwolf 2011-01-16 05:17:34