قوانین Code Review
Code Review یکی از مراحل اصلی تضمین کیفیت در فرآیند توسعه نرمافزار است و صرفاً یک مرحله تشریفاتی برای تأیید Merge Request محسوب نمیشود.
هدف از Code Review، شناسایی ریسکهای فنی، بهبود کیفیت کد، انتقال دانش بین اعضای تیم و اطمینان از رعایت استانداردهای معماری و توسعه است.
تمامی تغییرات باید پیش از Merge شدن از طریق فرآیند Code Review بررسی شوند.
مسئولیت Reviewer
Reviewer مسئول بررسی کیفیت فنی تغییرات و اطمینان از عدم ایجاد ریسکهای قابل توجه در سیستم است.
موارد زیر باید در فرآیند Review بررسی شوند:
معماری و ساختار کد
- رعایت مرزهای Moduleها و مسئولیتهای هر بخش
- هماهنگی تغییرات با معماری فعلی پروژه
- جلوگیری از ایجاد وابستگیهای غیرضروری
امنیت و دسترسی
- بررسی مسائل مرتبط با Security
- اطمینان از پیادهسازی صحیح Authorization
- جلوگیری از افشای اطلاعات حساس
Validation و Sanitization
- بررسی صحت Validation ورودیها
- اطمینان از Sanitization دادههای دریافتشده
- جلوگیری از ورود دادههای نامعتبر به سیستم
Performance
- بررسی تعداد Queryها و احتمال ایجاد مشکل N+1
- بررسی عملیات پرهزینه و تأثیر آنها بر Performance
- اطمینان از عدم ایجاد پردازشهای غیرضروری
Database و Transaction
- بررسی نیاز به Transaction در عملیات چندمرحلهای یا چندنوشتنی
- بررسی تأثیر Migrationها بر دادههای موجود
- اطمینان از وجود برنامه Rollback در تغییرات حساس
Compatibility
- بررسی Backward Compatibility
- اطمینان از عدم ایجاد Breaking Change ناخواسته
استانداردهای کدنویسی
- رعایت Naming Conventionها
- خوانایی و Maintainability کد
- رعایت استانداردهای تعریفشده پروژه
مسئولیت Author
Author مسئول آمادهسازی تغییرات به شکلی است که فرآیند Review سریع، دقیق و قابل انجام باشد.
Author باید:
- Merge Request را تا حد امکان کوچک و متمرکز نگه دارد.
- برای هر Task یا JIRA Issue یک Merge Request مستقل ایجاد کند.
- توضیحات کافی درباره هدف و جزئیات تغییر ارائه دهد.
- به تمامی Commentهای Reviewer پاسخ مناسب و فنی ارائه کند.
- تغییرات درخواستی Reviewer را با Commitهای جدید اعمال کند.
- در صورت عدم پذیرش پیشنهاد Reviewer، دلیل فنی و قابل استناد ارائه دهد.
قوانین Approval
Approval به معنی تأیید صرف تغییرات نیست.
با ثبت Reviewer، Approval تأیید میکند که:
- تغییرات را به صورت کامل بررسی کرده است.
- اثرات احتمالی تغییر را درک کرده است.
- ریسکهای اصلی مرتبط با این تغییر بررسی شدهاند.
- تغییر با استانداردهای فنی پروژه مغایرت ندارد.
برای تغییرات حساس، فرآیند Review باید با دقت بیشتری انجام شود.
موارد زیر نیازمند بررسی دقیقتر هستند:
- تغییرات مرتبط با Security
- تغییرات Database Migration
- تغییرات Permission و Access Control
- تغییر در Behaviorهای مشترک سیستم
- تغییرات دارای اثر گسترده در بخشهای مختلف پروژه
مواردی که باید Blocker شوند
در صورت مشاهده موارد زیر، Reviewer باید Merge Request را تا زمان اصلاح Block کند:
مسائل امنیتی
- نبود Authorization برای Endpointهای حساس
- افشای اطلاعات محرمانه یا دادههای حساس در Logها
مشکلات ساختاری
- Merge Request شامل چند Task یا چند JIRA Issue مستقل باشد.
- تغییرات خارج از Scope تعریفشده Task انجام شده باشد.
مشکلات داده و Validation
- Validation ناقص برای Inputهای ورودی
- عدم Sanitization دادههای دریافتشده
مشکلات Performance
- اجرای Query داخل Loop
- ایجاد احتمال N+1 Query
- اضافه شدن پردازشهای غیرضروری و پرهزینه
مشکلات Database
- Migration مخرب بدون برنامه Rollback
- تغییرات Database بدون بررسی تأثیر روی دادههای موجود
عدم رعایت استاندارد پروژه
- Response خارج از Contract یا Standard تعریفشده پروژه
- عدم رعایت Conventionهای کدنویسی
Best Practice تیمی
برای افزایش کیفیت فرآیند Review:
- Reviewer باید روی کیفیت و ریسک تغییر تمرکز کند، نه سلیقه شخصی.
- Commentها باید مشخص، قابل اقدام و همراه با دلیل فنی باشند.
- Author باید قبل از ارسال Merge Request، Self Review انجام دهد.
- تغییرات بزرگ باید قبل از ایجاد Merge Request به بخشهای کوچکتر تقسیم شوند.
جمعبندی
Code Review یک مرحله کلیدی در چرخه توسعه نرمافزار است که باعث کاهش خطا، افزایش کیفیت کد و انتقال دانش بین اعضای تیم میشود.
اجرای صحیح این فرآیند باعث خواهد شد:
- ریسک ورود Bug به Production کاهش یابد.
- استانداردهای معماری و توسعه حفظ شوند.
- کیفیت و نگهداریپذیری پروژهها افزایش پیدا کند.
Approval به معنی بررسی و پذیرش مسئولانه تغییرات است، نه صرفاً تأیید ظاهری یک Merge Request.