کد پدافندی چیست ؟

۲۰ اردیبهشت ۱۳۹۰ توسط , بدون نظر

کد پدافندی

به زبان ساده ، برنامه نویسی پدافندی (که با نام برنامه نویسی تدافعی نیز شاخته می شود) به این معناست که خروجی ما همیشه منفی (False) است مگر اینکه خلافش ثابت شود ! در واقع در برنامه نویسی تدافعی همیشه تمرکز بر خروجی منفی است. هنگامیکه در حال توسعه برنامه های خود هستید ، باید برنامه نویسی تدافعی ، اعتبارسنجی ورودی ها ، بررسی برای خطاهای خارج از محدوده و مواردی از این دست را در نظر بگیرید. این نگرش حتی باید به مواردی مانند عبارت های if نیز گسترش یابد. برای فهم بهتر برنامه نویسی تدافعی مطلب را با ذکر یک مثال باز می کنیم. قطعه کدهای ۱و ۲ که در زیر نمایش داده شده اند را در نظر بگیرید :

قطعه کد ۱ : یک عبارت If ساده

if (model.ValidationStatus == ValidationStatus.Invalid)
return false;
else
return true;

قطعه کد ۲ : یک عبارت If ساده دیگر

if (model.ValidationStatus == ValidationStatus.Valid)
return true;
else
return false;

کدامیک از عبارت های فوق امن تر است ؟ آیا آنها مشابه هم هستند ؟ چه اتفاقی روی می دهد اگر ValidationStatus دارای سه وضعیت : Valid ، Invalid و Unknown باشد؟ درقطعه کد ۱ اگر ValidationStatus برابر با Unknown باشد آنگاه True بازگشت داده خواهد شد. و این بدین معناست که کد شما تلقی خواهد کرد که آبجکت معتبر (Valid) است. گرچه در قطعه کد ۲ کد به طور خاص برای Valid بودن بررسی می شود و خروجی پیش فرض آن منفی است ، و بنابراین قطعه کد دوم امن تر است.

پاسخ دهید