聲明:我是一位正在學習編程的非專業人士。從未成爲項目的一部分,也沒有寫入任何超過500行的內容。防禦性編程是否違反DRY原則?
我的問題是:防禦性編程是否違反了不重複自己的原則?假設我對防禦性編程的定義是正確的(讓調用函數驗證輸入而不是相反),那麼這對您的代碼是否有害?
舉例來說,這是糟糕的:
int foo(int bar)
{
if (bar != /*condition*/)
{
//code, assert, return, etc.
}
}
int main()
{
int input = 10;
foo(input); //doesn't the extra logic
foo(input); //and potentially extra calls
foo(input); //work against you?
}
相比,這樣的:
int main()
{
if (input == /*condition*/)
{
foo(input);
foo(input);
foo(input);
}
}
同樣,作爲一個外行人,我不知道簡單的邏輯語句多少算對你就隨着表演的進行,但是防禦性編程對於節目或靈魂來說不是好事。
這與C++有什麼關係? – xtofl 2009-06-07 12:40:33
對不起,如果你想要刪除那個標籤,我在示例中使用了它。 – jkeys 2009-06-07 14:57:13
我在15歲時自學自己的時候寫過這樣的內容。現在我可能已經不那麼流行了,但我寫了更多實質性的程序。我想兩個步驟... – jkeys 2014-10-21 22:06:01