Back to Top


1395/08/30 - 17:16

چک لیست بازبینی کد

هدف این مقاله پیشنهاد یک چک لیست ساده و ایده آل است که برای بازبینی کد برای اکثر زبان های برنامه نویسی قابل استفاده باشد. هدف اصلی این مقاله این است که یک مسیر مستقیم و واضح در جهت بازبینی برای بازبین های کد ترسیم کند تا به طور موثر و با صرف حداقل زمان ممکن کد را بازبینی کنند.

کلمات کلیدی

کد نویسیچک لیستچک صحت کد نویسیقواعدبررسی کدبررسی برنامهبرنامه نویسی

چک لیست بازبینی کد

هدف بازبینی کد

هدف غائی بازبینی کد بررسی کد برای پیدا کردن نقاط ضعف، خطاها، نقاط قوت و راه های بهینه سازی کد برای کارایی بهتر است. این کار در اصل برای تحویل یک محصول نرم افزاری عاری از خطا (حداقل نزدیک به کامل) است که هدف (خواسته ها) را بر اساس استانداردهای صنعت برآورده سازد.

چک لیست بازبینی کد در ۲ بخش شرح داده می شود:

  1. چک لیست بازبینی کد - اساسی
  2. چک لیست بازبینی کد - جامع

چک لیست بازبینی کد - اساسی

  1. هدف گرا (هدفمند):‌ کد به هدف خود دست پیدا کند. به شکل ساده  یعنی به آن چیزی که در ابتدا هدفگذاری شده عمل کند.
  2. شکست ناپذیر (اعتبار سنجی شده): از اعتبارسنجی ها در جاهایی که لازم است استفاده شده باشد. کد هرگز و تحت هیچ شرایطی شکست نخورد. به ویژه با ورودی های اشتباهی که ممکن است کاربر نهایی وارد کند، صرف نظر از اینکه منفی باشد، فراتر از ظرفیت باشد، فرمت اشتباه داشته باشد و غیره هر ورودی که پاس می شود باید پردازش شود، قبل از به کارگیری آن در آینده بررسی شود. هر شی ای برای موجودیت داده و قبل از دسترسی به ویژگی آن بایستی چک شود.
  3. پاسخ ها هندل شوند (هندل خطا و فرمت دهی داده): نه تنها پیام خطا بلکه هر پاسخی که توسط سرور برگردانده می شود بایستی به درستی هندل شده باشد. آن باید سربار لازم، پیام های پاسخ، کدهای خطا و هر جزئیات لازم دیگری که به آن پیوست است را در فرمت خواسته شده داشته باشد. تمامی سناریوهای ممکن تست شده باشند تا از وقفه های اجباری، خطاهای وقفه زمانی و غیره جلوگیری شود.
  4. معماری را دنبال کند (بدون انحراف طراحی): هر محصول نرم افزاری یک سند معماری/طراحی تایید شده دارد (اگر ندارد، اول آن را انجام دهید). کد، طراحی را دنبال می کند که تایید شده باشد و محصول دنبال رو آن باشد. اگر هر تغییری در طراحی لازم باشد قبل از اینکه در کد موجود پیاده سازی شود باید مستند ، مطالعه و پایه گذاری و تایید شود.
  5. تست واحد (قابل اتکا): هر متد مرکزی تست واحد شده باشد و همه آنها را پاس کرده باشد.
  6. قابل استفاده مجدد (بدون تکرار): متدها به طور نامحدود و بر اساس هدفی مشخص خدمت می کنند (به طور محکم از اصول پیروی می کنند). توابع هرجایی که قابل قبول باشد استفاده مجدد می شوند و بایستی به طوری نوشته شوند که در پیاده سازی های  آینده قابل استفاده باشند. در اینحا نبایستی هیچ افزونگی کدی وجود داشته باشد و بدون هیچ ابهامی کد نوشته شده باشد.
  7. کارایی مبنا (پاسخ سریع،مقیاس پذیر): نرم افزار سریع است. تاخیری بین درخواست و پاسخ وجود ندارد. از رشته های خام الحاق شده به برنامه دوری شده و از متدهای مناسب همچون StringBuilder  استفاده شده است. کد مقیاس پذیر است و می تواند میزان های بزرگی از داده را هندل کند.
  8. امنیت (کد امن): از نظر اعتبارسنجی (با کدگذاری)، اینجکشن، نقش ها، سطوح دسترسی، جستجوی دایرکتوری، SQL Injection، هک XSS و غیره امن است. از قواعد امنیتی OWASP پیروی می کند.

چک لیست بازبینی کد - جامع

  1. قابل مدیریت (مرتب و فرمت دهی شده): کد خوانا و کامنت گذاری شده باشد و به آسانی مدیریت شود. کد فرمت دهی شده باشد و به آسانی خوانده و فهمیده شود. متدها خیلی طولانی نباشند تا مدیریت شوند و از حدی که نتوانند خوانده شوند فراتر نروند.
  2. از قراردادها و استاندارهای کدنویسی پیروی کنند (رهیافت های استاندارد): از قراردادها و استانداردهای کدنویسی پیروی کند و مطابق با کد محصول موجود باشد. در میان برنامه کدهای کامنت شده و مقادیر هارد کد شده نداشته باشیم.
  3. اتصالات را بعد از استفاده رها کنیم (هندل حافظه): منابعی که به طور خودکار بعد از استفاده رها نمی شوند را آزاد کنیم. اتصالات، پرت ها معمولا بسته می شوند.
  4. دارای یک لاگ قابل پیکربندی باشد (قابلیت دنبال پذیری): هر تراکنش یا حداقل تراکنش های نیازمند لاگ هستند را لاگ کنیم. آنها در یک مخزن (به صورت یک فایل) و به علاوه در بانک اطلاعات (به صورت Text) ذخیره می شوند. لاگ کردن در گام های مختلف برای اهداف محتلف می تواند در فایل پیکربندی (مثل web.config) فعال/غیرفعال شود.
  5. پوشش کد بیشتر از ۹۵٪ است (کارایی): پوشش کد به مهمی پاس کردن تست کیس های واحد است. ۹۵٪ کد پوشش داده شده است (یعنی ۹۵٪ کد واقعا توسط تست کیس های واحد تست شده اند)
  6. تحویل منبع بر حسب نیاز (سریع): منابعی تنها در صورت نیاز واکشی و تحویل می شوند. گزینه های لازم همچون صفحه بندی و غیره برای سر و کار با داده های بزرگ در دسترس هستند.
  7. بدون اخطار . لاگ های کنسول (امن بودن داده): اخطارهای کامپایلر در طول اجرای برنامه ظاهر نمی شوند. لاگ هایی که در طول توسعه استفاده می شوند واضح بوده و حاوی اطلاعات برنامه نیستند (به خصوص داده های حساس برنامه) که در کنسول مروگر نوشته شوند.
  8. استفاده قانونی از ابزار سوم شخص/کتابخانه ها (لایسنس): کتابخانه های خارجی  در کد فقط در صورتی استفاده شده اند که مجوزهای لازم را داشته باشیم.