اگر از یک برنامه نویس بخواهید کدی طولانی برای بخشی از یک پروژه بزند احتمالا از پیشنهاد شما استقبال کند. اما اگر به او بگویید که این کد آماده است و او باید آن را دستکاری کند، احتمالا تمایلی نشان ندهد و یا با اکراه آن را بپذیرد. دلیل این امر این است که بسیاری از ما به گونه ای که عادت داریم برنامه نویسی میکنیم درحالیکه ممکن است فهم و اصلاح آن برای دیگران سخت باشد. در این مطلب بررسی میکنیم که کدنویسی تمیز یا clean code چیست و درباره اصول آن صحبت میکنیم.
کدنویسی تمیز (Clean Code) مجموعه اصولی است که به شما کمک میکند کدی بنویسید، که فهم و اصلاح آن توسط دیگران و یا بعد از مدتهای طولانی برای خودتان سخت نباشد. این اصول استانداردهایی هستند که اگر رعایت شوند، شما را تبدیل به یک برنامه نویس حرفه ای میکنند. کدنویسی تمیز در کار گروهی اهمیت بسیار زیادی دارد.
در متدولوژی هایی مانند چابک (Agile) کدنویسی تمیز ضروری به نظر میرسد زیرا اعضای تیم، در بسیاری از موارد ناچار به تکمیل و اصلاح کدهای یکدیگر هستند. کد کثیف (Dirty Code) اصطلاحی است که در برابر کدنویسی تمیز وجود دارد. عدم رعایت اصول کدنویسی تمیز، بی نظمی و استفاده از رویههای تکراری کد شما را به Dirty Code تبدیل میکند.
کدنویسی تمیز اهمیت زیادی در هزینه زمانی و نیروی انسانی تیمهای فنی دارد. طبق تحقیقاتی که انجام شده معمولا توسعه دهندگان 30 تا 40 درصد زمان خود را صرف نوشتن کدهای جدید میکنند. این در حالی است که حدود 60 درصد از زمان آنها صرف نگهداری و اصلاح (Debug) کدها میشود.
یکی از مهمترین مسائل در فرایند برنامه نویسی داشتن منطق درست برای پیاده سازی بهینه صورت پروژه است. وقتی تفکر طراحی و الگوریتمی پیدا کنید، طراحی مسیری برای پیاده سازی صحیح سادهتر به نطر میرسد. آشنایی و مطالعه در برخی زمینههای مرتبط میتواند به شما در شکل گیری این ذهنیت کمک کند.
الگوریتمها (Algorithm) تعیین میکنند که یک مسئله را چگونه باید حل کنید. بنابراین برنامه نویسانی که دراستفاده از الگوریتمها و نوشتن الگوریتمهای جدید مهارت داشته باشند، در مرحله پیاده سازی نیز موفقتر خواهند بود. البته که یادگیری آنها نیازمند صرف زمانی برای مطالعه دقیق و توانمندیهای ریاضیاتی است. اگر در کنار مهاترهای فنی این مرحله را نیز پشت سر بگذارید ، به احتمال زیاد میتوانید تبدیل به یک برنامه نویس ارشد در حوزه کاری خود شوید.
ساختمان دادهها یکی از مهمترین مباحث در دانش برنامه نویسی محسوب میشوند و در ترکیب با الگوریتمهای طراحی، اساس منطق برنامه نویسی را تشکیل میدهند. ساختمان دادههای مختلف تاثیر زیادی در سرعت اجرای برنامهها دارن و مزایای مختلفی را برای کار با دادهها در اختیار برنامه نویسان قرار میدهند.
الگوهای طراحی (Design Patterns) راه حلهای ثابتی برای مشکلات رایج برنامه نویسی دراختیار شما قرار میدهند و به شما امکان استفاده از یک معماری قابل اطمینان را میدهند. تسلط داشتن بر دیزاین پترنهای مختلف میتواند بسیاری از باگهای احتمالی را در برنامه نویسی کاهش دهد و باعث ارتقا سطح فنی کدها شود.
اگر به مفاهیم برنامه نویسی علاقه مندید ولی مسیر یادگیری آن برایتان مشخص نیست پیشنهاد میکنیم در دوره آموزش برنامه نویسی سون لرن شرکت کنید تا مسیر یادگیری برنامه نویسی برایتان روشن شود.
نکته مهم این است که در فرایند کدنویسی تمیز اساسیترین بخش، طراحی مسیر و نقشه ذهنی پیش از آغاز فرایند برنامه نویسی است. بهتر است قبل از شروع الگوریتمهای کلی، بدانید که چه راهی برای پیاده سازی مسئله پیش رو راحتتر است. سپس با تکیه بر اصول Clean Code کدهای خود به تمیزترین شکل ممکن پیاده سازی کرده و در اختیار مدیر پروژه قرار دهید. تفاوت Clean Code و Dirty Code در پروژه هایی با تعداد خطوط کد بالا بسیار واضح است. برخی از کتابهای کاربردی در حوزه کدنویسی تمیز و برنامه نویسی در این مقاله برای شما جمع آوری شده اند.
منظور از برنامه نویسی ماژولار اینه که کد ها ی هر بخشی که میخایم ماژول بشه تو یه فایل جدا بزنیم ؟ درست متوجه شدم؟
1. برنامه نویسی ماژولار یعنی شما بخشهای پرتکرار (مثل دیالوگ حذف) در برنامه رو یک کلاس یا کامپوننت یا ماژول کنید و صد دفعه جاهای مختلف برنامه از نو کدشو ننویسید.
2. از لحاظ اصولی بهتر هست که این ماژول در یک فایل جدا باشه همونطور که فرمودید و به تمیزی و خوانایی کد کمک میکنه
برنامه نویسان در برنامه نویسی خود ، از کدی (در برخی از زبان هــا ) به نام Procedures ( پراسیژرز )
استـفاده میکـنند ، که از جلوگیری نوشتن کد های تکراری در بخش های مختلف خود داری میشود ; که همین موضوع ، بـاعـــث ســبک تـر شــدن برنامه و ، جلوگیری از گرفتم حجم زیاد میشود
برای مثال در زبان برنامه نویسی اسکرچ (Scratch ) ما در برنامه نیاز به تکرار کد هایی هستیم ولی ،
یک حلقه برمیداریم و اسم اون رو مثلا عملیات پرش گربه (Jump Process) میگزاریم و بعد ، داخل حلقه تمام کد هایی که نیاز به تکرار دارند رو میزاریم !
اینبار بجای اینکه تمام کد های عملیات رو در بخش هایی از کد ها بنویسیم ، Name Tag ( بلوک )
عملیات پرش گربه رو بمیداریم و در انجا میگزاریم ، حال با نوشتن یک کد ، تمام کد ها اجرا میشوند :)