
در این مقاله قصد دارم نکاتی را که از مشاهدهی دورهی «کد تمیز» به تدریس Maximilian Schwarzmüller آموختهام، با نگارشی شخصی و ساده با شما به اشتراک بگذارم. بیمقدمه سراغ اصل ماجرا برویم: کد تمیز چیست و چرا اهمیت دارد؟
کد تمیز، قابل فهم و خواناست؛ در حالی که کد شلوغ و نامرتب (یا بهاصطلاح کثیف) چنین نیست. شاید بتوان گفت این تعریف، مهمترین پیام این مقاله است. تمام نکات و توصیههایی که در ادامه میآیند، در راستای دستیابی به همین هدف ارائه شدهاند: افزایش خوانایی و درکپذیری کد.

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

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

اگر بین "کد سریع" و "کد تمیز" مردد هستید، به یاد داشته باشید که هرچند نوشتن کد تمیز در ابتدا زمانبرتر است، اما در بلندمدت، پروژه را پایدارتر، قابلنگهداریتر و توسعهپذیرتر میکند.

نامگذاری مناسب یکی از مهمترین عوامل در افزایش خوانایی و درک سریعتر کد است. نام مناسب کمک میکند تا نیازی به مرور خط به خط کد برای درک عملکرد یا نوع دادهها نباشد.

isValid استفاده کنید.userAge یا emailAddress.sendData() یا getUserInfo(). توابع بولی بهتر است به صورت سوالی باشند، مانند hasPermission().User یا Admin.همراستایی در نامگذاری میان اعضای تیم بسیار مهم است. از اصطلاحات محلی یا اختصارات نامفهوم پرهیز کنید. وضوح، مهمتر از خلاقیتهای پیچیده است. اگر لازم بود جزییات بیشتری به نامها اضافه شود، تعادل را با سادگی حفظ کنید.
u یا data بسیار گنگ است. بهجای آن، نامهایی مانند user یا customer انتخابهای بهتری هستند.process() یا handle() گنگ هستند. نامهایی مثل saveUser() یا user.store() دقیقاً هدف عملکرد را مشخص میکنند.Uentity یا ObjA باعث گیجی میشوند. اما نامهایی مثل User یا Admin بهخوبی نقش کلاس را نشان میدهند.کامنتها باید فقط در موارد ضروری استفاده شوند. بسیاری از کامنتها نهتنها مفید نیستند، بلکه ممکن است خوانایی کد را کاهش دهند.

باید طوری نوشته شود که تا حد امکان نیازی به توضیح نداشته باشد. به عنوان مثال:
با این حال، مواردی وجود دارد که کامنتهای خوب و مفید هستند، از جمله:
TODO برای یادآوری کارهای آینده (البته نباید جایگزین کامل کردن کدها شود.)قالببندی شاید از نظر فنی تأثیری بر اجرای کد نداشته باشد، اما نقش کلیدی در افزایش خوانایی و درک سریعتر کد ایفا میکند. کدی که بهدرستی فرمت شده باشد، مانند یک مقالهی منظم و قابل دنبالکردن است.

استفاده از فاصلهگذاری مناسب میان بخشهای مختلف کد باعث میشود بتوان مفاهیم مجزا را سریعتر تشخیص داد. اما در استفادهی بیشازحد از خطوط خالی بین بخشهای مشابه نباید زیادهروی کرد.
در زبانهای مختلف، سبکهای قالببندی متفاوتی وجود دارد. راهنماهایی مانند JavaScript Style Guide میتوانند کمککننده باشند. بسیاری از ویرایشگرهای مدرن (IDE) نیز قابلیت فرمت خودکار (auto-formatting) را دارند.
آنچه در این مقاله خواندید، بخش اول از نکاتی بود که از دورهی Clean Code یاد گرفتهام. اگر این موضوع برایتان جذاب بوده، حتماً بخش دوم را برای دریافت دیدگاهها و مثالهای عملی بیشتر بررسی کنید!