شش نکته برای بهبود مهارت مرور کد

این پست ابتدا در وبلاگ من منتشر شده است.به نظر من ، مرور کد یکی از موثرترین ابزارها برای بهبود پایه کد و همسویی مهارت های کدنویسی تیم شما است. اما ، مانند هر ابزاری ، می توان از آن به روش غلط استفاده کرد: می تواند به مردم آسیب برساند ، منجر به درگیری می شود و می تواند سرعت ارائه ویژگی های جدید را کاهش دهد. من به عنوان یکی از نگهبانان پیشگام GitLab و نگهدارنده اسناد Vue.js ، روزانه در حال بررسی درخواستهای pull / merge هستم (و وقتی یاد می گرفتم به طور موثر کد را مرور کنم اشتباهات زیادی مرتکب شده ام!) در این مقاله ، سعی می کنم چند تکنیک را به شما آموزش دهم که به من کمک می کند بدون کاهش کیفیت کد ، نظرات خود را بهتر کنم.تغییرات را به صورت محلی آزمایش کنیدجدی ، آن را انجام دهید هر زمان که درخواست برای بررسی دارید ، سعی کنید branch را بررسی کرده و تغییرات را بررسی کنید. نه تنها این به تست دود کمک می کند بلکه باعث می شود شما بیشتر بررسی کنید. بعضی اوقات تغییرات کد تا زمانی که مسئله ای را مطالعه نکنید ، اجرای آن را آزمایش کرده و متوجه شوید که در سطح پایین (Low-Level) بسیار خوب است کاملاً موثر به نظر می رسد اما معماری می تواند و باید بهبود یابد.اظهار نظر نکنید، سوال کنیدهر وقت چیزی را دیدید که به نظرتان بد می آید و آماده تایپ چیزی مانند آن هستید این بد است و ما نباید از آن استفاده کنیم– برای یک ثانیه صبر کنید. این احتمال وجود دارد که همکار شما به خوبی آگاه باشد که او کاری را به طور کامل انجام نمی دهد و ممکن است دلیل خوبی برای آن داشته باشند. قبل از نتیجه گیری ، سعی کنید چند سوال بپرسید تا زمینه را درک کنید.بد:من فکر نمیکنم ایده خوبی باشه تا درکامپوننت Vue از ‘querySelector’ استفاده کنیم.بهتر:من متوجه شدم که داریم از ‘querySelector’ در کامپوننت Vue استفاده میکنیم. دلیل خاصی وجود داره که باید با DOM کار کنیم؟در تمجید دریغ نکنیدیادگیری این یکی برای من بسیار سخت بود. به دلایلی ، من معتقدم که انجام یک مرور کد مساوی با گرفتن همه اشتباهات احتمالی است. چون وقتی کسی کار خود را خوب انجام می دهد (در این مورد ، نوشتن کد) خوب است ، باید آن را به طور پیش فرض خوب انجام دهد ، درست است؟نه درست نیستتمجبد بخش مهمی از بررسی کد است. همانطور که باید اقدامات نادرست در کد را سرزنش کنیم ، باید اقدامات خوب را نیز تشویق کنیم . اگر دیدید چیزی به زیبایی نوشته شده است ، آن را صریح بیان کنید. یک لحظه مهم در اینجا صادق بودن و خاص بودن است: اگر چیزی ارزش تعریف ندارد، از آن تعریف نکنید و فقط نگویید “چه کار خوبی”. “من روش ساخت تست ها را دوست دارم! پیگیری آن بسیار آسان است” بهتر عمل می کند.نظرات خود را برچسب بزنیداین نکته را من از همکارم یاد گرفته ام . ایده این است که برای یک نظر با یک برچسب خاص پیشوند قرار دهید، به طور واضح نقطه نظر را بیان کنید:سوال : من متوجه شده ام که ما از querySelector استفاده می کنیم. آیا دلیلی وجود دارد که ما به یک DOM واقعی دسترسی پیدا کنیم؟پیشنهاد : ما می توانیم با استفاده از یک عملگر سه گانه در اینجا این محاسبه را ساده کنیم.nitpick : هنگام بررسی primitiveها ، می توانیم از toBeبه جای toEqual استفاده کنیم.این به نویسنده کد کمک می کند تا هدف بازبینی را بهتر درک کند و از سوتفاهم جلوگیری کند. می توانید اطلاعات بیشتر در مورد این قرارداد را در این وب سایت بیابید.جدا کردن مسدود کننده از غیر مسدود کنندهیک نکته اضافی دیگر در مورد برچسب گذاری نظرات نیز این است که اگر نگرانی شما مسدود است ، آن را به وضوح بیان کنید. آیا ما باید قبل از ادغام درخواست pull در master این تغییر را ایجاد کنیم؟ یا اینکه این یک چیز جزئی است که می تواند درجلسه پیگیری به آن رسیدگی شود یا کلاً نادیده گرفته شود زیرا مسئله مهمی نیست؟ من ترجیح می دهم نظرات مسدود کننده را به عنوان مسئله مهم و غیر مسدود کننده را با nitpick مشخص کنم اما نحوه بیان نظر شما کاملاً به خود شما بستگی دارد. جدا کردن نظرات مسدود کردن از غیر مسدود کننده ، به تمیز نگه داشتن کد کمک می کند در حالی که عملکرد تیم را در دوره های مرور بی پایان از بین نمی برید.یک قدم اضافی برداریدیک نکته دیگر برای بهبود سنجش زمان ادغام ، تلاش اضافی به عنوان یک بازبین برای جلوگیری از دورهای اضافی بررسی است. نظرات توضیحی بنویسید – این به نویسنده کمک می کند تا نیاز به تغییر کد را درک کند و از سوالات اضافی جلوگیری می کند. چیزی وجود دارد که واقعا به توضیح طولانی نیاز دارد و نیاز به تغییرات متعددی دارد؟ یک وصله کد ایجاد کنید و آن را با شرح مختصری از آنچه این وصله انجام می دهد به نظر خود اضافه کنید. این کار، روند را به میزان قابل توجهی تسریع می کند.منبع: Six tips to improve your code review skills