لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
چگونه فرایند کدخوانی را تسهیل نماییم؟

چگونه فرایند کدخوانی را تسهیل نماییم؟

تابه‌حال شده تا با نگاه کردن به سورس‌کد پروژه‌ای و ده‌ها بار خواندن آن، کماکان متوجه نشوید که چه‌چیزی نوشته‌اید؟ برنامه‌نویسی همان‌قدر که شامل کدنویسی است، به‌ همان اندازه نیز مرتبط با کدخوانی است! اگر بتوانیم خواندن کدها را آسان‌تر کنیم و قوائد آن‌‌را رعایت کنیم، این مسئله به حرفه‌ای‌تر شدن‌مان در برنامه‌نویسی کمک شایانی خواهد کرد. 

اگر ظاهر کدها بهتر باشد، به‌عنوان یک قانون کلی بار روانی‌ای که به ذهن وارد می‌کنند به‌مراتب کمتر خواهد بود؛ در همین راستا، در این مقاله در مورد ساده‌‌سازی کدها و ایجاد ظاهری بهتر برای آن‌ها صحبت خواهیم کرد که درنهایت منجر به بهبود فرایند کدخوانی خواهد شد. 

به‌عنوان یک دولوپر حرفه‌ای، روزانه کدهای زیادی را می‌خوانیم و می‌نویسم، روی پروژه‌های جدید کار می‌کنیم، کد‌ها را بررسی می‌کنیم، با کدهای به‌اصطلاح Legacy کار کرده و داکیومنشن‌ها را مطالعه می‌کنیم (برای آشنایی با مفهوم Legacy،‌ به مقالهٔ چگونه یک Legacy Codebase (سورس‌کد قدیمی) را ریفکتور کنیم؟ مراجعه نمایید).

براساس تجربه‌ٔ اکثر دولوپرها، یک برنامه‌نویس بودن در برخی موارد بیشتر شامل کدخوانی است تا کدنویسی که درعین‌حال این‌کار هم می‌تواند شامل کدهای خودتان باشد و هم کد‌های دیگر برنامه‌نویس‌ها.

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

در پاسخ به این سؤال بایستی گفت که در Cognitive Psychology (روانشناسی شناختی)، Cognitive Load (بار شناختی) به تمامی سعی و تلاش ذهنی اشاره دارد که در حافظهٔ انسان‌ها صورت می‌گیرد.

Cognitive Load زمانی که اقدام به یادگیری هرچیزی می‌کنیم -از ورزش کردن گرفته تا موسیقی و حتی برنامه‌نویسی- وجود دارد و در ادامه قصد داریم برخی از تکنیک‌هایی را با شما به اشتراک بگذاریم که می‌توانند به کاهش بار‌ شناختی در حین کدنویسی/کدخوانی کمک کنند. به‌عبارت دیگر، به بررسی این موضوع خواهیم پرداخت که چه‌چیزی باعث می‌شود تا کدها سخت خوانده شوند و چگونه می‌توان فرایند کدخوانی را ساده‌سازی کرد؟

فونت‌ها و فاصله‌گذاری
نیاز به توضیح نیست که نوع فونت روی روحیه‌ٔ ما تأثیر می‌گذارد (در تحقیقی که توسط روانشناسی به‌نام Kevin Larson صورت گرفت، مشخص شد افرادی که درمعرض لی‌اوت‌هایی خوش‌ساخت -حاوی فونت‌های زیبا- بودند، احساسی داشتند مبنی‌ بر این‌که خواندن متون زمان کم‌تری به خود اختصاص داده و در کل، احساس بهتری داشتند؛ علاوه بر این، فونت‌هایی با طراحی خوب منجر به تمرکز بیشتر، فعالیت‌های ذهنی مؤثرتر و همچنین حس شفافیت فکری به‌مراتب بیشتری در افراد داشتند).  

فونت انتخابی شما تأثیر بسزایی روی مقدار باری که در ذهنتان برای پردازش کردن سورس‌کد روی صفحه به‌وجود می‌آید دارد؛ نه‌تنها فونت بلکه سایز آن، ارتفاع خطوط و فاصله‌ٔ بین کلمات نیز در این مسئله نقش دارند. برای درک بهتر این موضوع، توصیه می‌کنیم یک فونت خوب و یک فونت بد را در IDE خود بارگذاری کرده و کدخوانی را با هر ۲ فونت مقایسه نمایید.

ساختار کلاس‌ها و فانکشن‌ها
اگر با مفهوم MVC آشنایی داشته باشید، به‌خوبی می‌دانید که یک کنترلر چه وظیفه‌ای دارا است؛ مثلاً فرض کنیم کنترلری داریم که فانکشن‌های یک CRUD داخل آن قرار گرفته‌اند (CRUD مخفف واژگان Create، Read، Update، Delete است). به‌طور دیفالت، تورفتگی بدنهٔ فانکش‌ها باعث می‌شود زمانی‌که یک فایل را باز می‌کنید، خواندن کدهای داخل آن کلاس و بررسی آن‌ها به‌مراتب آسان‌تر شود.

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

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

/**
 * @ORM\Entity(repositoryClass="MyProject\UserRepository")
 */

در مثال فوق، می‌بینیم که چگونه بااستفاده از داک‌بلاک به معرفی کلاسی پرداخته‌ایم که یک انتیتی دیتابیس در Doctrine را مشخص می‌کند.

استانداردهای نام‌گذاری کلاس‌ها، فانکش‌ها، متغیرها و ...
آخرین چیزی که باید به یاد داشته باشید این است که چگونه هرچیزی را نام‌گذاری کنید؟ به‌جای این‌که کوتاه‌ترین نام را برای متغیر انتخاب کنیم، بهتر است برای آن نامی طولانی‌تر اما درعین‌حال بامسمی درنظر بگیریم؛ نام‌های کوتاه و نامتعارف، منجر به بی‌معنی جلوه پیدا کردن سورس‌کد هم خواند شد.

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

برای روشن‌تر شدن این مسئله، چند مثال از نام‌گذاری صحیح می‌زنیم؛ بهتر است به‌جای نامی همچون ()create، از ()createPage استفاده کنیم و یا به‌جای نام متغیری همچون process$، از نامی‌ همچون accountProcess$ استفاده نماییم که به‌مراتب گویاتر هستند.

۴ نکته‌ای که در این مقاله بدان‌ها اشاره شد، تقریباً هیچ ارتباطی با منطق کدنویسی (Programming Logic) ندارند؛ اما مواردی از این دست روزانه روی بار شناختی‌ ذهن شما در حین کدنویسی تأثیر می‌گذارند و رعایت آن‌ها به شما کمک می‌کند تا از برنامه‌نویسی بیشتر لذت ببرید.

حال نوبت به نظرات شما می‌رسد؛ به غیر از موارد بالا، به‌نظر شما رعایت چه نکات دیگری می‌تواند کدخوانی را لذت‌بخش‌تر و راحت‌تر سازد؟ نظرات، دیدگاه‌ها و تجربیات خود را با ما و سایر کاربران سکان به اشتراک بگذارید.

منبع


سحر شاکر