مهارت‌های کار تیمی نرم‌افزار قسمت ششم: Code Review

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

بازبینی کد همان‌طور که از اسمش پیداست ارسال یک کد نوشته شده توسط یک برنامه‌نویس به برنامه‌نویسی دیگری جهت بررسی آن و پیدا کردن ایرادات احتمالی است.

یکی از مهارت‌های ضروری که اعضای هر تیم نرم‌افزاری باید با فرهنگ آن آشنا باشند،‌ موضوع بازبینی کد است. برای اینکه بازبینی کد واقعاً‌ کار کند، برنامه‌نویسی که کار بازبینی را انجام می‌دهد بهتر است هم‌سطح یا بالاتر از برنامه‌نویسی باشد که کد را نوشته، هر چند اگر این‌طور هم نباشد باز هم مفید است چرا که تجربه کاری برنامه‌نویس سطح پایین‌تر را بالا می‌برد اما در صورتی که شرط اشاره در Code Review به کار رود،‌ می‌توانید مطمئن باشید که مزایای آن را در تیم‌تان احساس خواهید کرد.

اگر لوک اسکای واکر برنامه‌نویس بود و یودا می‌خواست نصیحتش کند حتماً می‌گفت: «کد رو بازبینی کن لوک!

روش انجام Code Review خیلی مهم نیست، می‌توانید source را zip کنید و با ایمیل بفرستید یا مثلاً در TFS خیلی راحت از محیط Visual Studio‌ برای شخص مورد نظر درخواست Code Review ارسال کنید. مهم این است که Code Review واقعاً انجام شود، یعنی واقعاً برای بازبینی کد وقت گذاشته شود و صرفاً یک درخواست تشریفاتی نباشد.

چرا خوب است کدها را بازبینی کنیم؟

دلایل مختلفی را می‌توان برای لزوم Code Review برشمرد. این دلایل دو جنبه دارند، یک جنبه آن بحث آماری قضیه است که مثلاً Code Review در عمل چقدر می‌تواند تفاوت ایجاد کند. مثلاً اشاره شده یک برنامه 500 هزار خطی از IBM در 11 مرحله بازبینی کد شد و علاوه بر اینکه زودتر از موعد مقرر عرضه شد، حدود 1 درصد از ایرادات پیش‌بینی شده برای چنین حجمی از کد را در بر داشت! این مورد و سایر شواهد مرتبط با مزیت‌های کمی Code Review را به نقل از کتاب Code Complete را در این نوشته از جف آتوود می‌توانید مطالعه کنید. اما جنبه دیگر اهمیت و مزیت‌های بازبینی کد در تفاوتی است که در رفتار اعضای تیم ایجاد می‌کند.

مهمترین مزیت‌های یک پروسه بازبینی کد برای یک تیم نرم‌افزاری به شرح زیر است:

  • باعث یکسان شدن هر چه بیشتر استایل کدنویسی می‌شود. در نوشته قبل سری مهارت‌های کار تیمی نرم‌افزار درباره اهمیت یکسان‌سازی استایل کدنویسی نوشتم. هر چه اعضای تیم بیشتر کد همدیگر را مرور کنند به تدریج بیشتر با استانداردهای کدنویسی در تیم آشنا شده و در یکآموزش جمعی بهتر آن‌ها را فرا می‌گیرند.
  • به اشتراک گذاری دانش که یکی دیگر از مهارت‌های کار تیمی نرم‌افزار است بسیار کمک می‌کند. اگر شما از یک روش یا الگوریتم جدید برای sort کردن یک آرایه یا پیدا کردن یک رشته در یک فایل استفاده کردید، دوست و همکار شما که در حال بازبینی کد شماست هم به صورت عملی این کد را خواهد دید و به این ترتیب دانش برنامه‌نویسی خیلی سریع و خوب به اشتراک گذاشته شده و استفاده می‌شود.
  • برنامه‌نویسان را مجبور می‌کند کد خوانا بنویسند! این یکی از مهمترین مزیت‌های بازبینی کد است. بدون Code Review و البته مستندسازی و کامنت‌گذاری اگر کدی که یک برنامه‌نویس خودش نوشته را 6 ماه بعد به خودش بدهید، متوجه می‌شوید که آن‌قدر بدخط آن را نوشته که حتی خودش هم نمی‌تواند از آن سر دربیاورد! اما وقتی برنامه‌نویس بداند کدش برای بازبینی ارجاع داده خواهد شد برای آبروی خودش هم که شده آن را قابل خواندن می‌کند.
  • باعث می‌شود کد دیگر وابسته به زندگی برنامه‌نویسش نباشد. به طور معمول اگر کدی را فقط یک برنامه‌نویس نوشته باشد، خودش می‌داند چه کار کرده و در صورتی که برنامه‌نویس خدای ناکرده بمیرد کد هم با وی دفن می‌شود! اما Code Review این شانس را به اعضای دیگر تیم می‌دهد که بدون کدنویسی در تولید همه بخش‌های نرم‌افزار حتی بخش‌هایی که خودشان در تولیدش نقشی نداشته‌اند مشارکت کنند. این‌طوری برای دفن شدن یک برنامه لازم است کل برنامه‌نویسان تیم دفن بشوند!
  • بازبینی کد یک تفریح سالم برای اعضای تیم است! باعث می‌شود بیشتر به هم نزدیک بشوند: به سوتی‌های هم بخندند، از کدهای قدرتمند هم درس بگیرند، در رفع مشکلات کد با هم همکاری کنند و خلاصه تیم شما را تیم‌تر می‌کند.

اگر تجربه خوبی از Code Review دارید می‌توانید آن را در بخش نظرات با دیگران به اشتراک بگذارید.