راهنمای بازبینی کد
فهرست مطالب
هدف بازبینی کد
بازبینی کد بخش حیاتی از فرآیند توسعه ماست که با پروتکلهای ارتباطی و استانداردهای کدنویسی ما همسو است. اهداف آن عبارتند از:
- بهبود کیفیت کد: شناسایی باگها، مسائل امنیتی و مشکلات عملکردی
- حفظ یکپارچگی: رعایت استانداردهای کدنویسی در سراسر پروژه
- تسهیم دانش: گسترش درک بخشهای مختلف سیستم
- راهنمایی اعضای تیم: کمک به رشد توسعهدهندگان از طریق بازخورد سازنده
فرآیند بازبینی
فرآیند بازبینی کد ما شامل مراحل زیر است:
الزامات درخواست ادغام (PR)
- عنوان: توضیحی واضح و مختصر از تغییرات
- توضیحات: هدف، رویکرد و جزئیات تست
- بازبینها: حداقل 2 بازبین (شامل CTO)
- برچسبها: دستهبندی مناسب (باگ، قابلیت جدید و غیره)
- مسائل مرتبط: ارجاع به تیکتهای مرتبط
- تستها: شواهدی از تستهای انجام شده (واحدی، یکپارچهسازی، دستی)
راهنمای بازبینها
موارد قابل توجه
- کارکردی
- کیفیت کد
- امنیت
- عملکرد
- تستها
- آیا کد به درستی کار میکند؟
- آیا موارد خاص به درستی مدیریت شدهاند؟
- آیا مدیریت خطاها جامع است؟
- آیا خطای منطقی وجود دارد؟
- آیا پیادهسازی با نیازمندیها مطابقت دارد؟
- آیا کد از استانداردهای کدنویسی ما پیروی میکند؟
- آیا کد از اصل DRY (عدم تکرار) پیروی میکند؟
- آیا کد قابل نگهداری و خوانا است؟
- آیا توابع و کلاسها اندازه مناسبی دارند؟
- آیا نام متغیرها و توابع واضح و توصیفی است؟
- آیا ورودی کاربر به درستی اعتبارسنجی و پالایش شده است؟
- آیا بررسیهای احراز هویت و مجوزها اعمال شدهاند؟
- آیا آسیبپذیریهای احتمالی تزریق SQL وجود دارد؟
- آیا از دادههای حساس به درستی محافظت میشود؟
- آیا ریسک امنیتی احتمالی وجود دارد؟
- آیا گلوگاه عملکردی وجود دارد؟
- آیا کوئریهای پایگاه داده بهینهسازی شدهاند؟
- آیا استفاده از حافظه بهینه است؟
- آیا مشکل N+1 در کوئریها وجود دارد؟
- آیا الگوریتم میتواند کارآمدتر باشد؟
- آیا تستهای واحد مناسب وجود دارد؟
- آیا موارد خاص و حاشیهای پوشش داده شدهاند؟
- آیا پوشش تست کافی است؟
- آیا تستها واضح و قابل نگهداری هستند؟
- آیا تستها واقعاً رفتار صحیح را تأیید میکنند؟
آداب بازبینی
- محترمانه و سازنده باشید
- روی کد تمرکز کنید، نه شخص
- دلیل پیشنهادات خود را توضیح دهید
- در صورت امکان مثال بزنید
- روشهای خوب و بهبودها را تصدیق کنید
- بازخوردها را اولویتبندی کنید (بحرانی در مقابل خوب-به-داشتن)
راهنمای نویسندگان
آمادهسازی برای بازبینی
- قبل از ارسال، کد خود را بررسی کنید
- اندازه PR را معقول نگه دارید (ترجیحاً کمتر از 400 خط کد)
- زمینه و توضیحات را در توضیحات PR ارائه دهید
- بخشهایی که نیاز به توجه ویژه دارند را مشخص کنید
- قبل از ارسال، تستها و خطایاب را اجرا کنید
پاسخ به بازخوردها
- به تمام نظرات پاسخ دهید
- پذیرای پیشنهادات باشید
- در صورت نیاز شفافسازی بخواهید
- در صورت مخالفت، استدلال خود را توضیح دهید
- تغییرات درخواست شده را به موقع اعمال کنید
زمانبندی بازبینی
- PRهای استاندارد: حداکثر ظرف 24 ساعت
- PRهای فوری: حداکثر ظرف 4 ساعت (باید به عنوان فوری علامتگذاری شود)
- PRهای حجیم: حداکثر ظرف 48 ساعت (برای PRهای بیش از 500 خط)
انواع خاص بازبینی
بازبینی معماری
برای تغییرات معماری قابل توجه:
- جلسه اختصاصی بازبینی معماری ترتیب دهید
- توسعهدهندگان ارشد و معماران را درگیر کنید
- تصمیمات طراحی و مصالحهها را مستند کنید
- پیامدهای بلندمدت نگهداری را در نظر بگیرید
بازبینی امنیتی
برای کدهای حساس از نظر امنیتی:
- بازبین متمرکز بر امنیت اختصاص دهید
- از چکلیست امنیتی استفاده کنید
- مدلسازی تهدید را در نظر بگیرید
- مدیریت صحیح دادههای حساس را تأیید کنید
ابزارهای بازبینی کد
- درخواستهای ادغام گیتهاب
- ابزارهای خودکار کیفیت کد (PHPStan, ESLint)
- بررسیهای خط لوله CI/CD
- گزارشهای پوشش کد
بهبود مستمر
ما به طور منظم فرآیند بازبینی کد را ارزیابی و بهبود میدهیم:
- بازخورد در مورد فرآیند بازبینی جمعآوری میشود
- مسائل رایج در بازبینیها ردیابی میشود
- راهنماها بر اساس تجربیات بهدست آمده بهروز میشوند
- بهترین روشها از بازبینیهای موفق به اشتراک گذاشته میشوند
یکپارچهسازی با روشهای تیمی
فرآیند بازبینی کد ما با موارد زیر یکپارچه است:
- برنامهنویسی زوجی: کد نوشته شده به صورت زوج معمولاً نیاز به بازبینی کمتری دارد
- مدیریت دانش: مستندسازی بینشهای حاصل از بازبینی کد
- نیازمندیهای تست: تأیید پوشش تست در حین بازبینی
- مستندات: اطمینان از مستندسازی صحیح کد