کدنویسی تمیز (Clean Code) چیست

برای انسان‌ها کد بنویسید نه ماشین‌ها!کد تمیز (Clean Code) چیست؟احتمالا می‌پرسید مگه تمیز بودن و یا در مقابل کثیف بودن کد اهمیت داره؟ مهم اینه که یه کدی بنویسیم که کامپیوتر بتونه اونو به درستی و با خروجی قابل قبولی اجرا کنه. جواب اینه که انسان‌ها قراره کد بنویسند، نه کامپیوترها. در واقع این یه عامل انسانی هستش که میاد یه الگوریتم طراحی می‌کنه و با توجه به اون چند خط کد میزنه و در نهایت تنها وظیفه کامپیوتر هم اجرای اوناست. کدنویسی تمیز یعنی نوشتن کدها به نحوی که دنبال کردن و بازبینی اونا توسط برنامه‌نویس به راحتی قابل انجام باشه. مطالعه و بازبینی یه کد تمیز مثل راه رفتن در یه اتاق مرتب و منظم هستش که هر چیزی سر جای خودش قراره گرفته و دسترسی به اونا امکان پذیره. به عبارتی کد تمیز یا Clean Code یعنی کدی که قابلیت خوانایی بالایی توسط برنامه‌نویس داشته باشه.کد بد (Bad Code) چیست؟کدنویسی بد یعنی کدنویسی کثیف و شلخته! تصور کنید قراره وارد یه اتاق نامرتب و کثیف بشین. احتمالا به سختی داخل اون قدم می‌زنین. ممکنه هنگام راه رفتن ناگهان یه شئ تیزی داخل پاهاتون فرو بره. یا مثلا برای پیدا کردن یه وسیله باید مدت‌ها زمان صرف کنید. در دنیای برنامه‌نویسی، یه کد کثیف رو میشه به این اتاق نامرتب تشبیه کرد. احتمالا برای شما هم ممکنه پیش اومده بشه که در حال بازبینی یه کد برنامه‌نویسی بودین و پیمایش در اون کد مثل راه رفتن در اون اتاق کثیف و نامرتب بوده.کدنویسی تمیز چگونه ابداع شد؟ایده‌ی کدنویسی تمیز، توسط آقای رابرت سی مارتین (Robert C. Martin) که اصطلاحا عمو باب هم به ایشون گفته میشه، به وجود اومد. ایشون یه برنامه‌نویس با سابقه‌ای هستند و طی سال‌ها بررسی در کدهای مختلف، به این نتیجه میرسند که نوشتن کدهای قابل فهم و خوانا یه مساله و موضوع مهمی در حوزه‌ی توسعه نرم‌افزار هستش، از این رو تصمیم به انتشار دانسته‌های خودشون می‌گیرین و کتا‌ب‌های مختلفی در حوزه‌ی توسعه نرم‌افزار تألیف می‌کنند که یکی از محبوب‌ترین این کتاب‌ها، کتاب Clean Code هستش، که در اون به اصول کدنویسی تمیز پرداخته شده.چرا باید از اصول کدنویسی تمیز پیروی کنیم؟در ادامه قصد دارم چند مورد از دلایل کدنویسی تمیز رو بیان کنم. همون‌طور که گفتیم قراره کدهای ما توسط عوامل انسانی که همون توسعه‌دهنده‌ها و برنامه‌نویسان میشن بازبینی بشن و در نهایت توسط کامپیوتر به صفر و یک تبدیل و اجرا میشن‌. برای اون کامپیوتر فرقی نمی‌کنه که کد شما تمیز هست یا نه! برای کامپیوتر فقط یه سری قواعد منطقی و دستوری مثل سینتکس مهمه که رعایت بشن و کاری به این چیزا نداره.ممکنه شما کدی که نوشیتن برای خودتون قابل فهم باشه. اما آیا برای بقیه برنامه‌نویسان و هم تیمی‌هاتون هم قابل فهم خواهد بود؟ این موضوع در پروژه‌های تیمی به شدت اهمیت پیدا می‌کنه و اگه کدتون خوانایی پایینی داشته باشه ممکنه براتون دردسر ساز باشه و روند توسعه پروژه رو کند کنه.یا اصلا فرض می‌گیریم شما قرار نیست که به طور گروهی کار کنید و پروژه خودتون رو به صورت انفرادی توسعه میدین. در اوایل و زمانی که شما در حال کدزنی پروژه هستین، شاید متوجه بخش‌های مختلف کدتون بشین و بتونید باگ یابی کنید. اما اگه مدت‌ها بعد، دوباره به سراغ کدتون برین، ممکنه متوجه مبهم بودن برخی از قسمت‌ها بشین، چون اون‌ها رو فراموش کردین. و اگه شما با چنین مساله‌ای روبرو شدین به احتمال زیاد کد شما یه کد تمیزی نبوده و نیاز به اصلاح داره.دلایل کدنویسی بد چیست؟کدنویسی بد، دلایل مختلفی می‌تونه داشته که در این مقاله قصد دارم تا دو مورد کلی از اونا رو بیان کنم: تازه‌کار بودن برنامه‌نویس و عجله در تکمیل پروژهتازه‌کار بودن برنامه‌نویسبه یاد دارم که اولین زبان برنامه‌نویسی رو در محیط دانشگاه یاد گرفتم. در اون زمان برای راحتی کارمون مثلا نام متغیرها رو حروفی مثل a و b و یا متغیرهایی مثل num1 یا num2 در نظر می‌گرفتیم. و برای نام‌گذاری مناسب زمان کافی صرف نمی‌کردیم. البته اون زمان ما فقط یه سری الگوریتم‌های ساده‌ای رو می‌نوشتیم که نام‌گذاری‌ها خیلی مهم نبود. اما به تدریج که پروژه‌های ما گسترش پیدا کرد، مجبور به انتخاب نام‌های بهتری شدیم. به یاد دارم که بعضی از افراد که البته زبان انگلیسی قوی‌ای هم نداشتند از نام‌گذاری‌های فینگلیش استفاده می‌کردند. مثلا می‌نوشتند: adadAval. یا مثلا پیام خروجی‌شون این بود: Lotfan adad aval ra vared konid. خب این جوری شاید ما به عنوان آماتور متوجه می‌شدیم. اما تصور کنید که این کدهای ما توسط یه برنامه‌نویس حرفه‌ای و اون هم خارجی زبان دیده بشه! بنظرم چیز زشتی میشه. هر چی باشه این زبان‌های برنامه‌نویسی رو اونا اختراع کردند و بهتره که از استانداردهای اونا پیروی بشه. نه اینکه مثلا از خودمون یه چیزی رو در بیاریم. البته بازم میگم این موارد اغلب در برنامه‌نویسی آماتور دیده میشه و خب طبیعتا تمرکز اونا بر سینتکس و الگوریتم هستش و خیلی روی تمیز بودن کد اهمیتی نمیدن.عجله در برنامه‌نویسیاز دیگر مواردی که باعث ناخوانایی کدها میشه، عجله در تحویل پروژه میشه. برنامه‌نویس برای اینکه زودتر پروژه‌ی خودش رو تحویل کارفرما بده، در این دام گیر میفته و تمرکز خودش رو صرفا برای به پایان رسوندن پروژه میذاره و برای تمیز نوشتن کد زمانی کافی رو صرف نمی‌کنه. امکان داره که اون پروژه هم تکمیل بشه. اما مهم‌ترین بخش هر پروژه، نگه‌داری و توسعه اون هستش. برای مثال همین برنامه‌نویس اگه مدت‌ها بعد بخواد دوباره سراغ همون سورس‌کدها بره و مثلا قابلیت‌های جدیدی رو اضافه کنه و یا تغییر جزیی بخواد بده امکان به مشکل برخوردن و سردرگمی وجود داره.جمع‌بندیدر این مقاله به اهمیت کدنویسی تمیز پرداخته شد. همچنین به عنوان یه ایده برای تقویت مهارت تمیزنویسی، می‌تونید از سرویس‌هایی مثل Github و Gitlab بهره بگیرین. در این سایت‌ها مجموعه‌ عظیمی از پروژه‌های ریز و درشت با زبان‌های برنامه‌نویسی مختلف وجود داره که شما با بررسی اونا می‌تونید برخی از الگوهای رایج در کدنویسی تمیز رو کشف کنید.در پایان از اینکه زمان خودتون رو برای خوندن این مقاله صرف کردین، ممنوم. در ضمن خوشحال میشم که نظرات خودتون رو درباره این مقاله کامنت کنید.منبع: وبسایت شخصی محمدحسین میثاق‌پور - کدنویسی تمیز (Clean Code) چیست