برنامه نویسی تدافعی (Defensive Programming)

معرفی برنامه نویسی تدافعی

Defensive programming یا برنامه نویسی تدافعی یک تمرین است که در آن شکست در کدنویسی را پیش بینی می کنید، و سپس کد پشتیبانی شده را برای شناسایی، جداسازی، و در برخی موارد، برای رهایی از شکست پیش بینی شده می افزایید.

برنامه نویسی تدافعی می تواند به ما در یافتن نقص و عیوب  در منبع کمک کند. با هدف قرار دادن نقص در آن، ما می توانیم آنها را زودتر پیدا کنیم، که منجر به داشتن نرم افزاری پایدارتر و بهره برداری از آن در زمان کوتاهتر می شود.

برنامه نویسی تدافعی بر این فرض استوار است که باگ هایی در کد ما وجود دارد، بنابراین ما باید راه هایی ساده تر برای شناسایی و یا مقابله با این مشکلات پیدا کنیم. به عنوان مثال، تایمرهای نگهبان یک کامپونت رایج از سیستم های تعبیه شده هستند که برای راه اندازی مجدد نرم افزار یا سخت افزار پس از شناسایی رفتار غیرمعمول طراحی شده اند.

Checksum ها المان های رایجی از packet های منتقل شده بین node ها هستند که خطاهای ناشی از ارتباط در بین node ها شناسایی می کند.

این دو نمونه از برنامه نویسی دفاعی هستند که در حال حاضر رایج هستند.

تاریخچه برنامه نویسی تدافعی

در زمان 1960 تا 1998، برای توسعه دهندگان امری بدیهی بود که برای اجرای strict code نیاز به ورودی های بسیار خاص داشتند. اولین مشکلی که وجود داشت دور انداختن خطا های کدنویسی بود. به عنوان مثال، اگر یک تجزیه کننده XML با یک کاراکتری مواجه می شد و آن را درک نمی کرد، به طور معمول، یک استثنا یا خطا را به عنوان مخالفت با صرف نظر کردن از کاراکتر و ادامه دادن به دور می انداخت.

تقریبا در سال 1998، زمانی که تجاری سازی اینترنت شروع به رشد کرد، تغییر فرهنگی رخ داد که به موجب آن برنامه نویسان روش عملی تری را برای پارامتر ها در پیش گرفتند. این امر به دلیل درخواست های زمانی مانند ارائه خدمات به کاربران مبتدی، پردازش داده های غیرساخت یافته و برخورد با زبان طبیعی رخ داده است.