کدنویسی تمیز

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

پیش نیازهای دوره

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

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

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

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

نقاط استرس و ساختار دوره

نقاط استرس نقاط مهمی در کدنویسی هستند که به شما اجازه می دهند کدهای تمیزی بنویسید. ما ساختار این دوره را نیز بر اساس همین نقاط استرس طراحی کرده ایم بنابراین ابتدا به صورت خلاصه با آن ها آشنا خواهیم شد.

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

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

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

مثال های ارائه شده در دوره

از آنجایی که در این دوره قصد نوشتن برنامه های کامل و پیشرفته را نداریم و توجه اصلی ما روی نوشتن کد با کیفیت و تمیز است، تمام مثال های ارائه شده کوتاه هستند تا از بحث اصلی دور نشویم. به همین دلیل نمی توانید کدهای نوشته شده در این دوره را کپی کرده و در ویرایشگر خود قرار داده و اجرا کنید. این کدها یا قابل اجرا نیستند (به خطا برخورد می کنید) و یا اینکه اصلا نتیجه ای ندارند که بخواهد اجرا شود.

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

نکته برای توسعه دهندگان جاوا و #C: در زبان های جاوا و سی شارپ همه چیز در کلاس ها نوشته می شوند اما در زبان پایتون یا جاوا اسکریپت اینطور نیست. اگر شما با این زبان ها آشنا نیستید ممکن است در ابتدا تعجب کنید که ما توابعی را بدون هیچ کلاسی داریم اما این مسئله در زبان پایتون و جاوا اسکریپت/تایپ اسکریپت کاملا طبیعی است.