واحد 3 / 12

خواندن کد، توضیح و سازگاری با پایگاه کد جدید

سود:

  • امکان نگاشت لایه به لایه یک کد خارجی پایه با هوش مصنوعی و ردیابی یک ویژگی از انتها به انتها
  • توانایی توضیح گام به گام توابع پیچیده و نظارت بر جریان داده ها
  • امکان مشاهده توضیحات هوش مصنوعی به عنوان یک فرضیه و تأیید ادعاهای مهم در کد

توسعه دهندگان به جای نوشتن کد، کد را می خوانند. وقتی شغل جدیدی را شروع می‌کنید، سرویسی را که شخص دیگری به جا گذاشته است، به عهده می‌گیرید یا به یک کتابخانه منبع باز کمک می‌کنید، اولین وظیفه شما این است که "اینجا چه خبر است؟" یافتن پاسخی برای سوال است. هوش مصنوعی می‌تواند این کار کشف را به ساعت‌ها کاهش دهد تا هفته‌ها - اما تنها زمانی که با سؤالات مناسب و بازتاب تأیید استفاده شود.

در این بخش، ما یاد می‌گیریم که از هوش مصنوعی مانند یک «راهنمای کد» استفاده کنیم: نقشه‌برداری از یک پایگاه کد خارجی، ترجمه یک تابع پیچیده به زبان ساده، دنبال کردن جریان داده، و نحوه استفاده از یک کتابخانه. قانون طلایی در اینجا این است که توضیح هوش مصنوعی یک فرضیه است. شما آن را با خود کد تأیید می کنید.

چرا حاشیه نویسی کد قدرتمند اما خطرناک است؟

یک LLM در خواندن یک کد و ترجمه آن به زبان انسانی بسیار خوب است، مانند "این تابع نشانه جلسه کاربر را تازه می کند". زیرا از میلیون ها نمونه مشابه الگوها را یاد گرفته است. این یک صرفه جویی در زمان است، به خصوص با عملکردهای طولانی و تودرتو.

این خطر وجود دارد: مدل گاهی اوقات آنچه را که به نظر می‌رسد کد انجام می‌دهد، می‌گوید، نه آنچه را که واقعاً انجام می‌دهد. اگر نام متغیر isAdmin باشد اما منطق داخل آن معکوس باشد، مدل ممکن است به نام نگاه کند و خلاصه اشتباهی را استخراج کند. بنابراین، قبل از اینکه بیانیه را مبنای تصمیمات انتقادی خود قرار دهید، باید رفتار ادعا شده را در خطوط مربوطه به صورت بصری بررسی کنید. توضیحات شما را به مکان مناسب می برد. رمز حرف آخر را می زند.

احتیاط: خلاصه "این کد X را انجام می دهد" هوش مصنوعی را به تنهایی به عنوان مدرکی در تصمیم گیری مربوط به امنیت یا جریان پول در نظر نگیرید. خلاصه نقشه ای است که نشان می دهد کجا باید نگاه کرد. شما تایید را در کد می دهید.

مراحل نقشه برداری یک پایگاه کد خارجی

  1. از سطح بالا شروع کنید. ابتدا با ساختار پوشه و نقاط ورودی (اصلی، راه اندازی برنامه، روتر خانگی) آشنا شوید. از هوش مصنوعی بپرسید "لایه های برنامه بر اساس این ساختار دایرکتوری چیست؟" بپرسید
  2. یک ویژگی را سرتاسر ردیابی کنید. "هنگامی که کاربر وارد سیستم می شود کدام فایل ها و به چه ترتیبی فعال می شوند؟" - تماشای یک جریان آموزنده تر از خواندن کل معماری است.
  3. اصطلاحات را بومی سازی کنید از هوش مصنوعی مفاهیم خاص پروژه ("مستاجر"، "دفتر کل"، "اجرای شغل") را بخواهید و معادل های آنها را در کد پیدا کنید.
  4. شما تابع پیچیده را ساده کردید. یک تابع طولانی را گام به گام توضیح دهید، سپس آن مراحل را در کد علامت بزنید.
  5. تأیید کنید. یک تغییر کوچک ایجاد کنید و تست هایی را برای آزمایش درک خود انجام دهید. این آزمون فوراً به شما می گوید که آیا درک شما اشتباه است.

سه کیف کوچک

مورد 1 - خدمات ارثی از 2 روز به 3 ساعت کاهش یافت. یک توسعه دهنده سرویس تطبیق پرداخت 4000 خطی را از یک همکار در حال خروج تحویل گرفت. آیا هوش مصنوعی ماژول‌ها را خلاصه می‌کرد و جریان پرداخت را به صورت سرتاسری دنبال می‌کرد. او شخصاً دو تابع مهم در کد را تأیید کرد. این کشف که تخمین زده می‌شد با "خواندن کور" کلاسیک 2 روز طول بکشد، با روش تایید شده هوش مصنوعی در 3 ساعت تکمیل شد.

مورد 2 - تله نام گمراه کننده. یک تابع validateAndSave نام داشت، اما خلاصه هوش مصنوعی می‌گوید: «اول اعتبار می‌دهد، سپس ذخیره می‌کند». وقتی توسعه‌دهنده وارد کد شد، دید که ذخیره‌سازی قبل از تأیید انجام شده است و تأیید فقط در گزارش نوشت. این دلیل اصلی یک بلیط باگ در تولید بود. اگر در کد اعتبارسنجی وجود نداشت، خلاصه نادرست خطا را پنهان می کرد.

مورد 3 - یادگیری کتابخانه جدید تسریع شد. تیم قصد داشت یک کتابخانه صف پیام را که با آن ناآشنا بودند یکپارچه کند. از هوش مصنوعی پرسیدم "چگونه یک مصرف کننده در این کتابخانه راه اندازی کنیم، چگونه در صورت بروز خطا دوباره تلاش کنیم؟" آنها پرسیدند و یک نمونه تولید کردند. سپس آنها مثال را با سند رسمی مقایسه کردند و یک تفاوت (نسخه قدیمی API) را برطرف کردند. زمان یادگیری به نصف کاهش یافت

چهار قالب قابل کپی

نگاشت پایگاه کد:

در زیر فهرست دایرکتوری/فایل یک پروژه آمده است. 1) لایه های برنامه (ورودی، منطق تجاری، دسترسی به داده ها و غیره) را استخراج کنید. 2) سفر فایل احتمالی درخواست "{{ مثال خاصیت }}" را فهرست کنید. 3) مناطقی را که مطمئن نیستید به عنوان "باید تایید شوند" علامت بزنید. {{directory_list}}

شرح عملکرد (گام به گام):

این تابع را به گروه های ردیفی تقسیم کنید و به ترکی ساده توضیح دهید که هر گروه چه کاری انجام می دهد. در نهایت: فهرست ورودی، خروجی، عوارض جانبی (پایگاه داده/فایل/شبکه) و موارد لبه احتمالی. رفتارهایی را که در مورد آنها مطمئن نیستید در یک عنوان مجزا جمع آوری کنید "باید تایید شود".{{function}}

ردیابی جریان داده:

مقدار "{{متغیر/داده}}" از کجا آمده است، چه تغییراتی را طی می کند، کجا نوشته شده است؟ با استفاده از نام توابع در کد یک زنجیره جریان ایجاد کنید. کد مرتبط: {{code_segments}}

آموزش استفاده از کتابخانه:

می خواهم با {{کتابخانه}} {{هدف}} را بسازم. یک مثال حداقلی و کاربردی بیاورید. مطمئن شوید که هر تابعی که استفاده می کنید در واقع به این کتابخانه تعلق دارد. اگر مطمئن نیستید، "تأیید از اسناد رسمی" را علامت بزنید. نسخه: {{نسخه}}.

اعلان ضعیف / اعلان قوی

ضعیف: "این کد را توضیح دهید." (در تعجب هستید؟ در چه سطحی؟ چه خواهید کرد؟)
Strong: "من این تابع را تحویل می‌گیرم و منطق امتحان مجدد را در آن تغییر می‌دهم. تابع را گام به گام توضیح دهید، مخصوصاً در صورت بروز خطا، به وضوح بیان کنید که چند بار و در چه بازه‌ای دوباره تلاش می‌کنید؛ قسمت‌هایی را که از آن مطمئن نیستید به عنوان "باید تأیید شود" علامت بزنید. [کد]."

نسخه قوی قصد و تمرکز شما را نشان می دهد (من منطق تلاش مجدد را تغییر خواهم داد). به طوری که توضیح یک خلاصه کلی نیست بلکه یک راهنمای مفید است.

تلاش

هوش مصنوعی خوب عمل می کند

حتما تایید کنید

خلاصه معماری عمومی

لایه ها را حذف کنید

دنباله تماس واقعی

تابع پیچیده

توضیح مرحله به مرحله

منطق معکوس، عوارض جانبی

جریان داده

پیش نویس زنجیره

شاخه های مشروط، مسیرهای پرش

استفاده از کتابخانه

تولید نمونه

اعتبار و نسخه API

هیچ جایگزینی برای درک انسانی وجود ندارد

توصیف هوش مصنوعی جایگزینی برای یادگیری نیست. آن را سرعت می بخشد «داشتن» واقعی یک پایگاه کد به معنای ساختن یک مدل ذهنی از آن است، و آن مدل تنها زمانی که کد را می‌خوانید، تغییرات کوچکی ایجاد می‌کنید و نتیجه را می‌بینید مناسب است. از هوش مصنوعی همانطور استفاده کنید که یک مربی به شما بگوید "اینجا را نگاه کنید، این مهم است" - اما جایی که آن را با چشمان خود می بینید بخوانید.

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

اشتباهات رایج

  • خلاصه را به عنوان مدرک در نظر بگیرید. تصمیم گیری در مورد کد بدون تایید توضیحات به معنای افتادن در دام نام های گمراه کننده است.
  • چسباندن قطعات خیلی بزرگ خلاصه کردن 2000 خط به طور همزمان نتایج سطحی و مستعد خطا به دست می دهد. به قطعات تقسیم کنید
  • عدم بیان هدف اگر نگویید "چه خواهید کرد"، توضیحات کلی باقی می ماند و بر کسب و کار شما تمرکز نمی کند.
  • عدم تأیید اعتبار نمونه کتابخانه. مدل ممکن است API قدیمی یا ناموجود را فراخوانی کند. مقایسه با سند رسمی
  • دادن تمام یادگیری ها کار کردن فقط با چکیده ها بدون خواندن پایه کد، شما را در اولین اشتباه واقعی درمانده می کند.

به طور خلاصه

هوش مصنوعی راهنمای قدرتمندی برای کاوش در یک پایگاه کد خارجی است: معماری نقشه‌برداری، توابع پیچیده را ساده می‌کند، جریان داده را ردیابی می‌کند، استفاده از کتابخانه را آموزش می‌دهد. اما هر توضیحی یک فرضیه است. نظر خود را واضح بیان کنید، آن را تجزیه کنید، و هر ادعای مهمی را که مدل می گوید (و نمی گوید) "باید تایید شود" را در کد و آزمایش آن بررسی کنید. راهنما هوش مصنوعی است. شما هستید که نقشه را می خوانید و مسئولیت را بر عهده می گیرید.

وظیفه کاربردی

ماژولی را انتخاب کنید که با آن آشنا نیستید یا به تازگی به ارث برده اید. ابتدا لایه ها و سفر فایل یک ویژگی را با الگوی «نقشه پایه کد» استخراج کنید. سپس حیاتی ترین عملکرد آن ویژگی را گام به گام با الگوی "توضیح عملکرد" ​​توضیح دهید. در نهایت، شخصاً حداقل دو ادعا را که مدل به عنوان "باید تأیید شود" را در کد بررسی کنید و به درست یا نادرست بودن آنها توجه کنید.

چک لیست

  • [ ] من عبارت هوش مصنوعی را به عنوان یک فرضیه در نظر می‌گیرم و آن را در کد تأیید می‌کنم.
  • [ ] هنگام توضیح کد، هدف و تمرکز خود را به دستور اضافه می کنم.
  • [ ] من پایه کد بزرگ را با تقسیم آن به قطعات خلاصه می کنم.
  • [ ] من ادعاهای مهم را در خط برای تله های نام گمراه کننده/ منطق معکوس بررسی می کنم.
  • [ ] من نمونه های کتابخانه را با سند و نسخه رسمی مقایسه می کنم.
  • [ ] من از هوش مصنوعی به عنوان راهنما برای تسریع یادگیری استفاده می کنم، نه به عنوان جایگزینی برای یادگیری.