免責事項: 私は現在プログラミングを学んでいる素人です。プロジェクトに参加したことも、500 行を超えるものを書いたこともありません。
私の質問は次のとおりです。防御的プログラミングは、自分自身を繰り返さないという原則に違反していますか? 私の防御的プログラミングの定義が正しいと仮定すると (呼び出し関数が逆ではなく入力を検証するようにする)、それはあなたのコードに有害ではないでしょうか?
たとえば、これは悪いですか:
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);
}
}
繰り返しになりますが、素人の私には、単純な論理ステートメントがパフォーマンスに関してどの程度不利になるかわかりませんが、防御的なプログラミングはプログラムや魂にとって良くないことは確かです。