آموزش زبان آلمانی (دورهٔ ۹۰ روزه) · درس ۳۹ از ۹۰

کدریویو؛ نظرِ فنی و مؤدبانه به آلمانی

⚡ پاسخ کوتاه

کدریویویِ آلمانی، مستقیم و جدی است اما قاعده دارد: نقد به کد، نه به شخص — „Diese Zeile könnte man vereinfachen“ (این خط را می‌شود ساده‌تر کرد) نه «شما بد نوشتید». سه قالبِ طلایی: تعریف („Sauber gelöst!“)، سوال („Warum hast du hier X gewählt?“)، پیشنهاد („Wie wäre es mit …?“).

درس ۳۹ از ۹۰ — کدریویو؛ نظرِ فنی و مؤدبانه به آلمانی

کدریویو، حساس‌ترین گفتگوی فنی است: هم باید صادق باشی (آلمانی‌ها صراحت را می‌خواهند!) هم محترم (قانونِ «کد، نه شخص»). این درس هر دو طرفِ ریویو را می‌سازد: نظر دادن روی کدِ دیگران و جواب‌دادن به نظراتِ روی کدِ خودت!

و یک واقعیتِ فرهنگیِ مهم: مستقیم‌بودنِ ریویویِ آلمانی برای خیلی از مهاجرها اولش «تند» به نظر می‌رسد — «Das ist falsch» یعنی «این غلط است» نه «تو بدی»! وقتی این را بفهمی، هم ریویو گرفتنت آسان می‌شود هم ریویو دادنت آلمانی می‌شود.

سه‌لایهٔ نظر؛ تعریف، سوال، پیشنهاد

لایه قالب مثال
تعریف Sauber! / Gut gelöst! / Gefällt mir! „Sauber gelöst, besonders die Tests!“
سوال Warum hast du …? / Gibt es einen Grund, warum …? „Warum hast du hier eine Schleife gewählt?“
پیشنهاد Wie wäre es mit …? / Man könnte … / Schau dir mal … an „Wie wäre es mit einer Hilfsfunktion?“
اشکالِ جدی Das verursacht … / Das führt zu … „Das führt zu einem Memory-Leak.“
اختیاری Nit: / Kleiner Hinweis: „Nit: Leerzeichen am Ende.“

Nit (از Not) = نکتهٔ کوچکِ اختیاری — کدِ فرهنگیِ ریویوهایِ فنیِ دنیا! و عبارتِ طلاییِ نقدِ نرم: „Aus Neugier:“ (از روی کنجکاوی:) — „Aus Neugier: warum kein Stream hier?“ = سوالِ بدونِ قضاوت!

گفتگو: یک ریویویِ کامل — PR با پنج کامنت

Reviewer: Overall sauber! Ein paar Anmerkungen:در کل تمیز! چند نکته: — شروعِ استانداردِ هر ریویو: تعریف + نکته‌ها!
1) Diese Funktion ist ziemlich lang. Man könnte sie in zwei aufteilen.۱) این تابع bastante طولانی است. می‌شود به دو تا تقسیمش کرد. — man könnte: نقدِ نرمِ آلمانی!
2) Warum kein Early-Return hier? Das würde die Verschachtelung reduzieren.۲) چرا این‌جا early-return نه؟ لانه‌شدگی را کم می‌کرد. — چرا-نه‌ی فنی: نقد با استدلال!
3) Nit: Fehlender Punkt am Satzende im Kommentar. 😄۳) نکتهٔ ریز: نقطهٔ آخرِ جمله در کامنت نیست. — نیت + ایموجی = مهربانیِ فنی!
Du: Guter Punkt bei 1)! Ich splitte sie auf. Bei 2: Early-Return habe ich bewusst weggelassen — ich fand es so lesbarer. Bin aber offen! (در ۲: عمداً نگذاشتم — خواناتر می‌دیدم. ولی بازم!)جوابِ حرفه‌ای: پذیرشِ نقد + توضیحِ تصمیم + باز بودن — سه‌لایهٔ جوابِ کامل!

واژگانِ گیت و ریویو

واژه معنی جمله
der Pull-Request (PR) پول‌ریکوئست Ich habe einen PR aufgemacht.
der Commit کامیت Der Commit ist zu groß — splitte ihn.
der Branch برنچ Rebase den Branch auf main.
mergen ادغام‌کردن Kannst du mergen?
reverten برگرداندن Wir reverten den Commit.
der Konflikt تضاد Ich habe einen Merge-Konflikt.
bestätigen / approve تأیید Zwei Approves, dann können wir mergen.
die Anmerkung نکته/یادداشت Danke für die Anmerkungen!
Ich habe deinen Kommentar umgesetzt und den PR aktualisiert. Kannst du nochmal draufschauen?کامنتت را اعمال کردم و PR را به‌روز کردم. یک بار دیگه نگاه می‌کنی؟ — چرخهٔ کاملِ ریویو در دو جمله!

گرامرِ عمیق‌تر: مجهولِ نقد — «می‌شود کرد» به‌جای «تو باید»

رازِ نقدِ نرمِ آلمانی: man — ضمیرِ «آدم/می‌شود» — به‌جایٔ «تو»! مقایسه: „Du solltest das vereinfachen“ (باید ساده‌اش کنی — شخصی) در برابرِ „Man könnte das vereinfachen“ (می‌شود ساده‌اش کرد — فنی). و یک پله بالاتر: مجهول: „Das könnte vereinfacht werden“ (این را می‌شود ساده‌تر کرد) — نه تو، نه من، فقط کد! این دو قالب (man könnte + مجهولِ werden) مهم‌ترین ابزارِ نقدِ سازندهٔ کاری‌ات در آلمانی‌اند — فاز ۵ مجهول را کامل باز می‌کند، ولی همین حالا قالبشان را قفل کن!

اشتباه‌های رایجِ فارسی‌زبان‌ها در همین درس

این بخش را با یک قرارداد بخوان: هر ❌ یعنی «مغزِ فارسی‌زبانت این را می‌سازد و طبیعی است»، و هر ✅ یعنی «این همان چیزی است که گیرندهٔ آلمانی‌زبان می‌شنود». با هر جفت بلند تکرار کن تا شکلِ درست در گوشت نشست کند.

❌ Dein Code ist schlecht.❌ نقد به شخص! آلمانیِ کاریِ درست، کد را نشانه می‌گیرد نه آدم را.
✅ Diese Stelle ist etwas unübersichtlich. Man könnte sie aufteilen.✅ شکل درست را دو بار بلند بگو؛ حالا یک بار در یک جملهٔ خودت.
❌ Warum hast du das so gemacht?! (با تعجب/تهدید)❌ تعجبِ سه‌تایی در ریویو = جنگ! سوالِ فنی با لحنِ مسطح بپرس.
✅ Gibt es einen Grund für diese Lösung? Ich frage aus Neugier.✅ شکل درست را دو بار بلند بگو؛ حالا یک بار در یک جملهٔ خودت.
❌ (جواب به نقد:) Nein, das ist richtig so.❌ دفاعِ خشک — جوابِ حرفه‌ای سه‌لایه است: توضیح + انعطاف!
✅ Ich habe X gewählt, weil … Aber zeig mir gern deine Variante!✅ شکل درست را دو بار بلند بگو؛ حالا یک بار در یک جملهٔ خودت.

تمرین‌های این درس — چهار قدم، بی‌عجله

تمرینِ ریویو: یک PRِ خیالی (یا واقعی!) را آلمانی-ریویو کن:

  1. سه کامنتِ ریویو بنویس: یک تعریف، یک سوالِ «Aus Neugier»، یک پیشنهادِ «man könnte».
  2. یک «اشکالِ جدی» را با قالبِ «Das führt zu …» بنویس — مؤدب اما صریح.
  3. جوابِ سه‌لایه به یک نقدِ خیالی بده: پذیرش/توضیح + انعطاف.
  4. واژگانِ گیت را در یک دیالوگِ کوتاهِ merge بگو: برنچ، کنفلیکت، ریورت، اپروو.

پاسخ تمرین‌ها — اول خودت جواب بده، بعد باز کن

پاسخ تمرین ۱
„Sauber gelöst!“ · „Aus Neugier: Warum Streams statt Loop?“ · „Man könnte diese Logik in einen Service auslagern.“ — سه کامنتِ سه‌لایه؛ این‌ها را در ریویویِ واقعیِ بعدی‌ات کپی کن — با نامِ درستِ کد!
پاسخ تمرین ۲
„Das führt zu einem Race-Condition, wenn zwei Requests gleichzeitig kommen.“ (این وقتی دو ریکوئست همزمان بیایند به حالتِ مسابقه می‌رسد.) — اشکالِ جدی + علتِ فنی + بدونِ «تو» = نقدِ حرفه‌ایِ کامل!
پاسخ تمرین ۳
„Guter Punkt! Ich habe die Schleife gewählt, weil die Liste klein ist — aber ich mache gern einen Vorschlag im zweiten Commit.“ (نکتهٔ خوبی است! حلقه را چون لیست کوچک است انتخاب کردم — ولی در کامیتِ دوم پیشنهاد می‌دهم.) — پذیرشِ نرم + استدلال + اقدام!
پاسخ تمرین ۴
„Kannst du meinen Branch reviewen? Es gibt einen kleinen Konflikt mit main — ich rebase zuerst. Wenn du approvest, mergen wir heute noch.“ — چهار واژهٔ گیت در یک گفتگوی واقعیِ مرج!

چالشِ امروز

🎯 امروز سه کامنتِ ریویو با قالب‌های درس بنویس — روی کدِ واقعیِ خودت یا در ذهن! یک تعریف، یک «Aus Neugier»، یک «man könnte». مستقیم‌بودنِ مهربانِ آلمانی، مهارتی است که با تمرین ساخته می‌شود!

نکات مکالمهٔ واقعی که کتاب‌ها کم می‌گویند

  • «Danke für die Anmerkungen!» بهترین جوابِ شروعِ هر ریویو است — حتی اگر با هیچکدام موافق نباشی، اول تشکر، بعد بحث! آلمانی‌ها این ترتیب را جدی می‌گیرند: تشکر = پذیرشِ فرایندِ نقد؛ بحث = محتوای آن.
  • کدریویویِ آلمانی، «کمال‌گراییِ مهربان» است — جزئیاتِ کوچک (نقطه، فاصله، نام‌گذاری) در آلمان جدی گرفته می‌شود چون «کیفیتِ بلندمدت» ارزشِ فرهنگی است. اگر نیت‌های فراوان دیدی، تعجب نکن — همان‌طور که تو هم حق داری نیت بگذاری!
  • «LGTM» و «Approved» بین‌المللی‌اند ولی جملهٔ آلمانی‌اش بهتر است — „Sieht gut aus, approved! 👍“ یا „Finde ich gut — merge!“. دو جملهٔ بومی که ریویوهایت را از «مصرف‌کننده» به «عضو» ارتقا می‌دهند!
🔑 جمع‌بندی این درس

ریویویِ آلمانی = مستقیم به کد، مهربان به آدم: تعریف („Sauber!“)، سوال („Aus Neugier: warum …?“)، پیشنهاد („Man könnte …“)، اشکال („Das führt zu …“). جواب‌ها سه‌لایه: تشکر + توضیح + انعطاف. Nit برای ریزه‌کاری و LGTM برای تأیید!

پرسش‌های رایج

اگر ریویو خیلی سخت و شخصی شد چه کنم؟
اول: احتمالاً شخصی نیست — مستقیم‌بودنِ آلمانی را با تندی اشتباه نگیر! دوم: اگر واقعاً لحن مشکل دارد، در جلسهٔ یک‌به‌یک یا چتِ خصوصی مطرح کن: „Ich versuche, aus dem Feedback zu lernen — kannst du mir bei den Punkten 2 und 3 etwas mehr Kontext geben?“ (سعی می‌کنم از فیدبک یاد بگیرم — می‌توانی برای نکاتِ ۲ و ۳ کمی بیشتر توضیح بدهی؟) — این جمله، سوءبرداشت را به گفتگوی فنیِ سالم تبدیل می‌کند!
چقدر باید در ریویو «حق داشته باشم»؟
قاعدهٔ فرهنگیِ سالم: کدِ روی برنچ، «مالِ تیم» است نه تو! دفاعِ استدلالی خوب است، دفاعِ مالکیتتی نه. جملهٔ طلاییِ تفکیک: „Ich verstehe deinen Punkt nicht ganz — hilf mir, es zu sehen“ (نکته‌ات را کامل نمی‌فهمم — کمکم ببین) — همیشه سوالِ فهم، بهتر از جنگِ موضع است!

آلمانی را همین امروز در گوشی‌ات تمرین کن

واژه‌های این درس را هر جا که دیدی با منوی «ذخیره در آپ‌ورد» به فلش‌کارت‌هایت اضافه کن؛ الگوریتم مرور فاصله‌دار سرِ موعد یادآوری‌شان می‌کند، تلفظ‌شان را با صدای آلمانی می‌شنوی و در مکالمهٔ هوش مصنوعی همان‌جا که لازم است استفاده‌شان می‌کنی.