خانههای بساز بفروشی شما را یاد چطور ساختمانهایی میاندازد؟ احتمالاً بنایی در ذهنتان نقش بست که همه چیز در ظاهر آن خیلی تمیز و شیک است. اما جنس سرامیکهای کف افتضاح است. درها خیلی زود تبله میکنند. یک تکه از دیوار پذیرایی به خاطر آب بندی نشدن سرویس بهداشتی همیشه زرد است و ساکنین ساختمان از ترس این که تعمیرات آسیبهای بیشتری به ساختمان پوک بزند رغبتی برای تعمیر کردن آن ندارند. کد کثیف نوشتن هم دقیقاً مثل خانه بساز بفروشی است.
فقط کمی سلیقه و رعایت چند قاعده لازم است تا از شما یک کلین کد نویس بسازد. ما این قواعد را مطرح میکنیم و بسیار خوشحال خواهیم شد اگر نظرتان را در مورد آن به ما بگویید. البته اگر خودتان کدنویس هستید و اعتقاد دارید تمیز کد میزنید، تجربیات خود را با ما درمیان بگذارید.
اگر فقط همین یک قانون را رعایت کنید، به تدریج کدهای شما تبدیل به کلین کد خواهند
همان ابتدا که شروع به کد زنی میکنید برای خودتان یک عهدنامه یا قانون تعریف کنید. این که نامگذاریها چطور و بر اساس چه قاعدهای انجام شود؟
این موضوع خط مشی شما را واضح نگه میدارد و شیوه طی کردن مسیر را تا انتها به شما نشان میدهد.
هر فردی این قاعده را به شیوهای تعریف میکند. به هر حال همین امروز به این فکر کنید که شاید این کدی که مینویسید تا ده سال آینده توسط دیگر توسعه دهندگان دیده شود. بدیهی است آنها هم باید کلمات شما را درک کنند و بتوانند باگها را شناسایی و اصلاح کنند.
استفاده از پسوندهای نوع متغییر یکی از شیوههای مناسب و پذیرفته شده در جهان کد نویسی است که کدهای شما را کلین میکند.
از یک قرارداد برای نشان دادن دامنه متغیر استفاده کنید. باز هم هیچ قاعدهای وجود ندارد که چطور باید این کار را انجام دهید. چون هر کسی روش خاص خود را برای انجام آن دارد. مهم این است که این قاعده در تمام کد شما یکسان باشد. به این ترتیب همیشه مشخص خواهد بود که چه متغییری میتواند از کجا استفاده شود.
خیلی قانون سادهایست، نه؟ با این حال اغلب کدنویسان ازآن تبعیت نمیکنند. به لحظه نا امیدی کد نویسی فکر کنید که با کد شما روبه رو میشود و اصلاً نمیتواند تشخیص دهد که هر متغییری چیست؟ چرا تعریف شده؟ چه وظیفهای دارد و ... دوست دارید جای آن کد نویس باشید؟! اگر نه لطفاً برای کدهای خود هرچند کوتاه ولی توضیح بنویسید.
استفاده از فضای خالی بین کدها فوق العاده قدرتمند است و هیچ نقطه ضعفی ندارد. گاهی اوقات در زبانهایی مانند جاوا اسکریپت که اندازه فایل خود کد منبع مهم است، ممکن است بخواهید فایلهای شما کوچک باشند و این فضای خالی میتواند چند کیلوبایت فایل شما را بزرگتر کند. در صورت امکان، تمام فضای خالی خود را در حین توسعه نگه دارید تا کد قابل خواندن باشد. سپس، از یکی از بسیاری از برنامههای کوچک کننده سایز هوشمند استفاده کنید که کد را مرور میکنند و تمام فضای خالی را درست قبل از آپلود آن حذف کنید.
کامنتها میتوانند به سرعت نشان دهند که یک تابع پیچیده در حال انجام چه کاری است یا ترتیب عملیات خاص را توضیح دهد. فراتر از توضیح هدف خود کد، کامنتها میتوانند به دیگران کمک کنند تا متوجه شوند که شما میخواستید چه مشکلاتی را با کد خود حل کنید، که میتواند به آنها کمک کند راه حلهای بهتری پیدا کنند. به خاطر داشته باشید که اظهار نظر بیش از حد گاهی اوقات میتواند با ایجاد کدهای مخرب تأثیرات مضری داشته باشد. اما حتماً کامنت بزنید.
نوشتن کد فنی بیشتر به این معنی نیست که کد شما باید خوانایی کمتری داشته باشد. خواندن چند خط کد تکراری نه تنها سختتر است، بلکه احتمال خطا را نیز افزایش میدهد. نکته مهم در مورد برنامه نویسی این است که میتوانید دستورات پیچیده را به روشهای مرتب، قابل استفاده مجدد و هوشمندانه بیان کنید.
مثال زیر نشان میدهد که کد ضعیف و تکراری چه بلایی سر تمیزی کد شما میآورد.
در حالی که ممکن است تکه کد زیر پیچیدهتر به نظر برسد اما واقعاً نتیجه بهتری در تمیزی کد دارد و اتفاقاً درک آنکه چه اتفاقی در این تکه کد رخ داده برای یک کد نویس خیلی هم ساده است.
هنگامی که یک بلوک کد با چندین حلقه پشت سر هم دارید، به متغیرهای تکرارکننده مختلف نیاز دارید. همیشه بحث در مورد اینکه چه چیزی باید استفاده شود وجود دارد، و اغلب افراد به آن پاسخ ذهنی میدهند.
اما زمانی که آنها یکی پس از دیگری هستند، منطقی است که تکرار کننده خود را خارج از حلقه اعلام کنید و دوباره از آن استفاده کنید. نگاه کردن به آن نه تنها بهتر است، زیرا همیشه واضح است که "i" متغیر تکرارکننده شماست.
وقتی پروژههای شما بزرگتر میشوند، کلاسهای شما هم متغیرهای زیادی خواهند داشت. اول این که باید همه اعلانهای متغیر خود را در بالای صفحه یا حداقل همه با هم در جایی نگه دارید، این امر سرعت هر نوع جستجو را بالا میبرد.
در ثانی وقتی همه آنها با هم هستند میتوانید آنها را به گونه ای تنظیم کنید که حتی درک آنها آسانتر باشد. به عنوان مثال، گروه بندی همه آنها بر اساس آنچه که هستند، راه خوبی برای دسته بندی است. این احتمال وجود دارد که چندین نوع از یک شی داشته باشید، بنابراین همه آنها را گروهبندی کنید و بعد بخشی برای موارد متفرقه در زیر آن داشته باشید.
تعاریف تابع ریخت کد شما را به هم میزند. معمولاً بهتر است نگاهی به کاری که در واقع انجام میشود، بیندازید. اگر عملکردی بیش از آنچه از نامش نشان میدهد کار انجام میدهد، ممکن است برخی از عملکردهای اضافی به عملکرد خودش تقسیم شود.
مشابه مشکل عملکردی، اگر تعداد زیادی عملکرد وجود دارد که همه را در یک مکان نگه میدارید، بهتر است یک کلاس جداگانه برای مدیریت آن عملکرد ایجاد کنید. وقتی نوبت به نوشتن، خواندن و قابلیت نگهداری میرسد، کد تمیز نوشتن واقعاً واجب است.
مراحل ذکر شده در بالا قوانین مشخصی نیستند. از آنها به عنوان طرح کلی استفاده کنید، یا از آنها به عنوان راهنمایی برای یافتن سبک و روش انجام کارها بهره ببرید. نکته مهم این است: کدهای خود را مرتب، واضح، با فاصله گذاری و برش برش خورده و با قوانین نامگذاری ثابت نگه دارید.
لطفاً طوری کد بزنید که هر کسی که با کد شما کار میکند از تلاش شما قدردانی کند و در حین دیباگ یا بررسی کد شما هم از آن چیزی بیاموزد.
اگر دوست دارید در کدنویسی فرد حرفهای تری باشید و کلین کد زدن را بهتر بیاموزید، میتوانید کتاب کلین کد یا کد نویسی تمیز را بخوانید.
این کتاب توسط رابرت سی.مارتین نوشته شده و آقایان حسین مسعودی و مهرداد عباسی آن را ترجمه کردهاند.