1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

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

شروع موضوع توسط hector2141 ‏15/10/12 در انجمن برنامه نویسی

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    [​IMG]
    به زبان ساده ، برنامه نویسی پدافندی (که با نام برنامه نویسی تدافعی نیز شاخته می شود) به این معناست که خروجی ما همیشه منفی (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 بودن بررسی می شود و خروجی پیش فرض آن منفی است ، و بنابراین قطعه کد دوم امن تر است.
    به نقل از وب سایت آراد حقی