کدریویو؛ دادنِ بازخوردِ فنی و گرفتنش بدونِ زخم
کدریویو دو نیمهٔ جداشدنی ندارد — دادن و گرفتنِ نظرِ فنی، هر دو با قالب میآیند. دادن: دستهبندیِ کامنتها (nit / suggestion / blocking) و سوالبستن بهجای حکم (Would you consider…?). گرفتن: thanks, good catch — و جداکردنِ «کد» از «خود».
کدریویو، حساسترین مکالمهٔ فنی است: میخواهی به همکارت بگویی کدش بد است، بدونِ اینکه بگویی خودش بد است — و برعکس، بخوری «این غلط است» را بدونِ دفاعِ شخصی. فرهنگِ تیمهای انگلیسیزبانِ سالم برای همین، قالبهای دقیقی دارد؛ قالبها هم مؤدباند هم کارآمد.
برای زبانِ دوم یک خبرِ خوب: کامنتِ ریلویو، مکالمهٔ کوتاهِ نوشتاری است — زمانِ فکر دارد. همین درس را نه فقط بخوان، بلکه template کن؛ اولین ریلویوی جدیات، از دل همین قالبها بیرون میآید.
دادنِ کامنت؛ سه درجه و دو قالب
| درجه | واژه | جملهٔ نمونه |
|---|---|---|
| اصلاحِ ضروری | blocking / must-fix | Blocking: this breaks on empty input — we need a guard clause. |
| پیشنهاد | suggestion / could consider | Suggestion: we could extract this into a helper — up to you. |
| جزئی | nit (nitpick) | Nit: trailing space here. Not blocking. |
| ستایش | praise / this is nice | This is a really clean solution — learned something! |
| سوال | question | Question: why array over set here? Genuine curiosity. |
دو قالبِ طلاییِ نرمکردن: ۱) سوال بهجای حکم: نهِ «This is wrong» — که «Would you consider using a set here? Lookups would be O(1).» ۲) «ما» بهجای «تو»: «What if we extracted the validation into its own function?» — «ما»، کامنت را از امتحانِ شخصی به تصمیمِ مشترک میبرد. و قانونِ «praise در جا»: اگر چیزی خوب بود، همان لحظه بنویس — ریلویو فقط شکارِ اشکال نیست.
گرفتنِ کامنت؛ سه پاسخِ حرفهای
۱) پذیرشِ گرم: "Good catch — fixing now." (دقتِ خوبی بود — همین الان درستش میکنم) ۲) توضیح + بازگشایی: "Fair point. I kept it sync because the caller needs the value immediately — but I'm open if you see a cleaner way." ۳) مخالفتِ مستند: "I see it differently — with the new cache, the extra query costs almost nothing. Happy to discuss on a call if you're not convinced." — هر سه: کوتاه، بیحالتیِ دفاعی، و برنده. قاعدهٔ طلایی: هر کامنت را یک نظرِ فنی ببین نه حکمِ شخصی — جملهٔ یادگاریِ صنعت: "Review the code, not the coder."
جریانِ ریلویو؛ درخواست تا merge
زبانِ جریان: "Could you take a look when you get a chance?" (درخواست) · "Left a few comments — nothing blocking." (جوابِ ریلویور) · "Pushed the changes — PTAL." (اعمال شد؛ PTAL = please take another look — مخففِ محبوبِ گیتهاب) · "LGTM!" (looks good to me — یعنی تأیید؛ سه حرفِ شیرینِ هر PR) · "LGTM with nits." (تأیید — با همین جزئیهای کوچیک). ادبِ زمان: ریلویوِ PRِ دیگران را همان روزی که میخواهی خودت ریلویو شوی بده — اقتصادِ متقابلِ تیمهای سالم است.
گرامرِ عمیقتر: مودالِ ریلویو — should و could و نرمیِ شرطی
ریلویو، زبانِ مودالهای مشورتی است: should (پیشنهادِ قوی: this should be async), could (گزینه: we could extract a helper), might (احتمال: this might break on empty input) — و نرمترینِ همه، شرطیِ دوم: If this were a public API, I'd rename it (اگر API عمومی بود، اسمش رو عوض میکردم) — were/'d، فرمِ مؤدبانهٔ نقدِ فرضی! و برای درجهگذاریِ نظری به لحنِ نوشتاری: Blocking: (بلاککننده), Nit: (جزئی), Question: (سوال) — سه برچسبِ اولِ کامنت، ریلویو را از گفتگو به سندِ تصمیم میبرد.
گفتگو: بحثِ ریلویو در thread و جمعبندی
اشتباههای رایجِ فارسیزبانها در همین درس
این بخش را با یک قرارداد بخوان: هر ❌ یعنی «مغزِ فارسیزبانت این را میسازد و طبیعی است»، و هر ✅ یعنی «این همان چیزی است که گیرندهٔ انگلیسیزبان میشنود». خطاها اثرِ مستقیمِ ترجمهٔ ذهنیِ فارسی به انگلیسیاند؛ با هر جفت بلند تکرار کن تا شکلِ درست در گوشت نشست کند.
تمرینهای این درس — چهار قدم، بیعجله
چهار تمرینِ ریلویو-نویسی؛ هر پاسخ را اول بلند بگو و بنویس، بعد باز کن — کامنتِ خوب، آینهٔ ذهنِ منظم است.
- این کامنت را نرم و فنیاش کن: «This loop is bad. Delete it.» — با برچسب و مودالِ مشورتی.
- جملهٔ شرطیِ دوم را کامل کن: «If this ___ (be) a public API, I ___ (rename) it.»
- به PRی که فقط یک Nit دارد جوابِ کوتاهِ کامل بده — دو جمله، با رأیِ روشن.
- ترجمه کن: «نمیدانم چرا این بررسی لازم است. اگر ورودی خالی باشد چه میشود؟» — با برچسبِ Question.
پاسخ تمرینها — اول خودت جواب بده، بعد باز کن
پاسخ تمرین ۱
پاسخ تمرین ۲
پاسخ تمرین ۳
پاسخ تمرین ۴
چالشِ امروز
🎯 در ریلویوی بعدیات یک کامنت را با قالبِ سهلایه بنویس: برچسب (Nit/Question/Blocking) + رفتارِ مشخص + مودالِ مشورتی؛ اگر ریلویویی در راه نیست، یکی از کامنتهای قبلیات را بازنویسی کن.
نکات مکالمهٔ واقعی که کتابها کم میگویند
- Happy to be wrong — پایانِ کامنتِ نظر-محور: «happy to be wrong here» — علامتِ آگاهیِ تیمی؛ نظر میدهی، جنگ نمیکنی.
- پاسخِ بلند ننویس — پاسخِ کامنت: یک-دو خط یا یک commit. بحثِ طولانی در thread = جلسهٔ پنهان — بردارش به تماس.
- رایِ نهایی را با برچسب بده — پایانِ ریلویو: «LGTM» یا «LGTM with nits» — ابهامِ «خوبه ولی…»، مرج را معلق میکند.
دادن: درجهگذاری (blocking / suggestion / nit / praise) + سوال بهجای حکم (Would you consider…?) + «we» بهجای «you». گرفتن: Good catch / Fair point / مخالفتِ مستند با پیشنهادِ تماس. جریان: PTAL و LGTM — دو مخففِ دنیای ریلویو. و یادت باشد: کامنت، هدیهٔ فنی است؛ قالبش را همین درس داده.