یکی از بدیهیترین راهها برای این که در کدنویسی پیشرفت کنید، کدنویسی است؛ به عبارت دیگر، باید تا میتوانید کد بزنید اما اگر میخواهید پیشرفت خیلی سریعتری داشته باشید، باید علاوه بر کدنویسی، کدخوانی را هم به برنامۀ آموزشی خود اضافه کنید! یعنی کدهایی که دیگران نوشتهاند را بخوانید. در واقع، این مقاله دربارۀ این است که چه بخوانیم، چگونه بخوانیم، و هنگام خواندن کدها به دنبال چه باشیم؟
اگر تا به حال کدهای دیگران را نخواندهاید، توصیه میکنیم پس از مطالعۀ این مقاله، کدخوانی را شروع کنید و اگر قبلاً تجربهٔ کدخوانی داشتهاید، این مقاله به شما کمک میکند تا از تلاش خود نتیجۀ بهتر و موثرتری بگیرید.
چه بخوانیم؟
این که چه بخوانیم، تصمیم بزرگ و سختی است. ما نمیتوانیم مستقیماً به شما توصیه کنیم که شروع به خواندن فلان سورسکد کنید چرا که همه چیز بستگی به خود شما دارد اما در عین حال میتوانیم دستورالعملهایی ارائه کنیم تا با دنبال کردن آنها، بتوانید تصمیم بگیرید که چه سورسکدی را برای مطالعه انتخاب کنید.
کدهایی را بخوانید که به آنها متکی هستید: میتوانید برای شروع، کدهایی را بخوانید که از قبل آنها را استفاده نمودهاید؛ مثل پلاگینهای مورد علاقۀتان در وردپرس، یک بهاصطلاح جِم زبان روبی که از نظر شما خوب و کاربردی است و یا یک پلاگین جیکوئری. همۀ این موارد انتخابهای خوبی برای یادگیری هستند، زیرا آشنایی قبلی شما با آنها میتواند درک کدها را برای شما آسانتر کند. همچنین به عنوان یک توسعهدهنده، میتوانید اسناد و اجزا جدیدی را به آنها اضافه نموده و به نحوی آنها را توسعه دهید و صرفاً یک مصرفکننده نباشید.
کدهایی را بخوانید که شما را تحتتأثیر قرار میدهند: اگر به اپلیکیشن، بازی یا برنامۀ خاصی علاقۀ ویژهای دارید، به احتمال زیاد سورس آن نیز برای شما -به عنوان یک کدنویس- جذاب خواهد بود. بنابراین اگر به سورسکد برنامۀ مورد علاقۀ خود دسترسی دارید، به منظور یادگیری و پیشرفت هرچه سریعتر، حتماً آن را بخوانید.
کدهایی را بخوانید که برای توسعهدهندهٔ آن احترام قائلید: اگر تا به حال در یک پروژۀ اپنسورس کد زده باشید، به احتمال زیاد خیلی زود افرادی نظر شما را به خود جلب نمودهاند، کدهای آنها مورد تحسین شما قرار گرفته و یا حتی شاید حسادت شما را برانگیخته باشند؛ بنابراین خواندن کدهای این افراد میتواند برای شما جذاب باشد (اگر واقعاً تاکنون به توانایی و مهارت هیچ کدنویسی غبطه نخوردهاید و هیچ کس شما را به حیرت وادار نکرده است، بهتر است دست به کار شده و در میان توسعهدهندگان کدهای عالی و کاربردی به دنبال چنین شخصی بگردید؛ کسی را بیابید که به نحوی بتواند قهرمان و الگوی شما باشد).
کدهایی را بخوانید که برای شما قابل درک هستند: اغلب کدخوانهای ماجراجو به سراغ پروژههای بزرگی مانند Ruby on Rails ،Drupal و یا jQuery میروند اما توصیۀ ما این است که خواندن چنین پروژههای بزرگی را به بعد موکول کنید، مگر این که یک کدخوان باتجربه باشید.
پروژههای بزرگ اجزا بیشتری هم دارند و بنابراین ممکن است علیرغم تلاش زیاد، موفق به درک همۀ اجزای آن نشده و سردرگم شوید. سردرگمی به تدریج باعث ناامیدی خواهد شد و ممکن است برای همیشه خواندن سورسکد را کنار بگذارید. مزیت پروژههای کوچک این است که کل پروژه را میتوانید همزمان در ذهن خود نگاه دارید؛ بنابراین تنها چالش پیش روی شما درک جزئیات پروژه و درس گرفتن از آنها خواهد بود.
چگونه بخوانیم؟
حال که کد مورد نظر خود را برای خواندن انتخاب نمودهاید، سؤال این است که «کد را چگونه بخوانیم؟» و از آن مهمتر این که «از خواندن این کد قرار است چه چیزی به دست آوریم؟». به طور کلی، برای افزایش بهرهوری در خواندن سورسکد، چند توصیه داریم که عبارتند از:
سعی کنید از طرح کلی پروژه سر در بیاورید: همهٔ پروژهها از اجزایی تشکیل شدهاند و کم یا زیاد بودن این اجزا به بزرگی پروژه بستگی دارد؛ اما در ابتدای خواندن سورسکد پروژه، هدف اصلی پرداختن به جزئیات آن نیست. سعی کنید در ابتدا نگاهی کلی به پروژه داشته باشید و ساختار آن را درک کنید. هدف از این مرحله این است که با کل پروژه آشنا شده و بخشهای اصلی و ضروریات پروژه را بیابید؛ سپس میتوانید وارد جزئیات شوید.
یافتههای خود را ثبت کنید: در هنگام کدخوانی، منفعل نباشید؛ به عبارت دیگر، توصیه میکنیم همچنان که به خواندن کدها ادامه میدهید، نظرات خود را به صورت کامنتهایی به سورسکد اضافه نموده و ثبت کنید. نگران نباشید چرا که اصلاً نیازی نیست حتماً از همان ابتدا کامنتهای حرفهای بنویسید. شاید در اوایل کار کامنتهای شما چیزی شبیه موارد زیر باشد:
- فکر میکنم این متغیر پس از «مقداردهی اولیه» فراخوانی نشده است.
- این رابطه (Equation) فلان کار را انجام میدهد.
- تقریباً مطمئنم که این متغییر پس از خط 17، دیگر کاربردی ندارد.
پس از این که درک کاملتری از پروژه به دست آوردید، میتوانید کامنتهای غیرحرفهای خود را حذف نموده و کامنتهای بهتر و دقیقتری بنویسید. کامنتهایی که حتی ممکن است بتواند به بهبود پروژه نیز کمک کند.
از تستها استفاده کنید: امیدواریم که پروژهای که برای خواندن انتخاب نمودهاید، Test Suite داشته باشد. اگر ندارد، میتوانید از این مرحله صرفنظر کنید (یا پروژۀ دیگری را انتخاب کنید که از این ماژول برخوردار باشد).
وقتی میخواهید کدهای شخص دیگری را بخوانید، Test میتواند بخش بسیار خوبی برای شروع باشد زیرا توسعهدهندهٔ کدها در بخش تست بیان کرده است که انتظار دارد که این کد چه کاری انجام دهد. بعضی تستها اطلاعات زیادی را در اختیار شما قرار میدهند و برخی کمتر. اما مهم نیست تستها چطور نوشته شده باشند، مهم این است که به هر حال درک منظور و هدف توسعهدهنده از تست راحتتر از درک آن از خود کدها است.
همچنان که به خواندن ادامه میدهید، از تستها استفاده کنید و بررسی کنید که آیا کدها تَسک مورد نظر را به درستی انجام میدهند یا خیر؛ این کار میتواند شما را مطمئن کند که تنظیمات محیط کدنویسی خود را به درستی انجام دادهاید و همچنین برای اعمال تغییرات در کد اصلی به شما اعتماد به نفس میدهد.
اجرا کنید، بخشهایی را تغییر دهید و دوباره اجرا کنید: خواندن به این معنا نیست که چیزی ننویسید یا کاری نکنید. هنگامی حقیقتاً چیزی را میفهمید که اجزای آن را از هم جدا نموده و دوباره سر جای خود قرار دهید. همانطور که در بخش قبل گفتیم، تستها میتوانند به شما در این زمینه کمک کنند. برای تمرین میتوانید کدها را طوری تغییر دهید که درست کار نکنند، چیزی را اضافه کنید و عملکرد واقعی کدی را تغییر دهید. شاید با خود بگویید این که دیگر خواندن نیست! اما در واقع این هم خواندن است، مثل خواندن یک داستان ماجراجویانه که در آن خود را جای قهرمان داستان میگذارید.
در واقع، با این کار شما به صورت عمدی منجر به ایجاد اِکسپشنها میشوید و خواهید دانست که اگر در آینده فلان اِکشپشن رخ داد، به احتمال زیاد مربوط به کجای سورسکد میتواند باشد.
فرآیند خواندن را تکرار کنید: وقتی خواندن کدهای یک پروژه تمام شد، خواندن پروژۀ دیگری را شروع نموده و همۀ این مراحل را دوباره تکرار کنید. هر چقدر بیشتر کد بخوانید، کدخوانی شما بهتر شده و بر مفاهیم و ساختارها مسلطتر میشوید و خواهید توانست این کار را با سرعت بیشتری انجام دهید (دقیقاً همانند یک کتابخوان حرفهای).
از کجا شروع کنیم؟
هر جایی که بتوانید به پروژههای اپنسورس دسترسی داشته باشید، برای این کار مناسب است. به عنوان مثال، میتوانید از گیتهاب یا گیتلب استفاده کنید. این سایتها یافتن پروژههای جدید و دولوپرهای خوب را برایمان آسانتر کردهاند؛ جستجو کنید، پروژۀ مناسب خود را بیابید و کدخوانی را شروع کنید.
نظر شما چیست؟ آیا تا به حال از خواندن کدها به عنوان ابزاری برای پیشرفت استفاده کردهاید؟ اخیراً کد خوب و جالبی را خواندهاید؟ خواندن کدهای خاصی را به دیگران توصیه میکنید؟ نظرات و تجربههای خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.