پرووید
منو

آموزش اصول کدنویسی تمیز Clean Coding در سی شارپ

زبان: فارسی (دوبله شده)مترجم: پروویددوبلر: پروویدسطح: پیشرفتهمدت زمان: 03:19:17تعداد ویدئوها: 103فایل های پروژه: ناموجود
قیمت:۳٬۹۹۹٬۰۰۰ تومان
این آموزش بخشی از پکیج کامل آموزش کدنویسی تمیز (Clean Coding) است که می توانید از تمامی آموزش های آن دیدن کنید.

آموزش اصول کدنویسی تمیز Clean Coding در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی اصول کدنویسی تمیز در سی شارپ است که با نام اصلی Clean Coding Principles in C# از شرکت Pluralsight منتشر شده است.

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

کد نویسی تمیز (Clean Coding) و استفاده کردن از اصول و قواعد مهمی که در مبحث کدنویسی تمیز مطرح می‌شوند باعث می گردد که نرم‌افزار ها علیرغم رشدی که به مرور برای آنها اتفاق می افتد شرایط خود از لحاظ قابلیت خوانایی و قابلیت نگهداری را حفظ کنند. استفاده کردن از نام های مناسب برای متغیر ها و متدها و همچنین توجه به موضوعاتی از قبیل کامنت‌ها و فرمت بندی کردن کد، کمک می‌کند تا قابلیت خوانایی کد بهتر بگردد. با استفاده از اصولی از قبیل KISS و YAGNI و DRY و SOLID شما می‌توانید شرایط نرم‌افزارهای خود را در گذر زمان و با رشد طبیعی آنها، حفظ کنید.

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

Why Naming Matters - نمونه ای از بخش Naming در آموزش اصول کدنویسی تمیز Clean Coding در سی شارپ
نمونه ای از بخش «Naming» در آموزش اصول کدنویسی تمیز Clean Coding در سی شارپ
  • تورفتگی و یا حاشیه گذاری مناسب و کمک به قابلیت خوانایی کد
  • استفاده کردن از کامنتها در شرایطی که حضور آنها ضروری باشد و معنای کد نوشته شده را بهبود ببخشد
  • استفاده کردن از Namespace ها به منظور سازماندهی کردن هرچه بهطرح کلاس‌ها و دیگر سازه های کدنویسی
  • استفاده کردن از رسم و رسومات نامگذاری و یا Naming Convention های مناسب و وابسته به زبان و تکنولوژی مورد نظر
  • ایجاد کردن کلاس ها با توجه به اصل Single Responsibility و یا تک وظیفه‌ای
  • نوشتن متدهای کوتاه و متمرکز کردن هر متد بر روی انجام یک کار تک
  • کوچک کردن بدنه متدها و تلاش به کاهش پارامترهای ورودی یک متد
  • استفاده کردن مناسب و کاربردی از استثناها و یا همان Exception ها
  • نوشتن کدهایی که قابلیت خوانایی بالایی را دارند
  • توجه به Loosely Coupled بودن کدها
  • توجه به Cohesion بالای کدها و مرتبط کردن اعضای سازنده یک کلاس و یا یک Namespace به یکدیگر
  • استفاده کردن از سطوح مناسبی از Abstraction در کلاسها و متدها
  • استفاده کردن از Encapsulation و Information Hiding و دیگر مباحث شی گرایی
  • استفاده کردن از مباحث شی گرایی و اصولی از قبیل DRY و YAGNI و KISS.
  • استفاده کردن از Design Pattern های مناسب برای حل و فصل کردن چالش‌های موجود

علاوه بر این دوره آموزشی، توصیه می‌کنیم که از آموزش کدنویسی تمیز: نوشتن کد برای انسان ها و آموزش ریفکتورینگ Refactoring در سی شارپ و آموزش اصول کدنویسی با کیفیت بالا در سی شارپ نیز به منظور تکمیل کردن مباحث مربوط به کدنویسی تمیز استفاده کنید.

چرا اصول Clean Code در پروژه‌های C# اهمیت دارند؟

در پروژه‌های نرم‌افزاری، کدها معمولاً پس از انتشار اولیه همچنان توسعه پیدا می‌کنند و قابلیت‌های جدیدی به آن‌ها اضافه می‌شود. اگر ساختار کد از ابتدا قابل فهم و منظم نباشد، درک منطق برنامه و اعمال تغییرات به‌مرور دشوارتر خواهد شد. رعایت اصول Clean Code به توسعه‌دهندگان کمک می‌کند کدی بنویسند که خواندن، بررسی و اصلاح آن آسان‌تر باشد. این موضوع در پروژه‌های C# اهمیت زیادی دارد، زیرا افزایش تعداد کلاس‌ها و متدها می‌تواند پیچیدگی نگهداری نرم‌افزار را بیشتر کند.

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

اصول نام‌گذاری متغیرها، متدها و کلاس‌ها در C#

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

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

چگونه متدها و کلاس‌های تمیزتری در C# بنویسیم؟

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

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

Refactoring چیست و چه نقشی در Clean Code دارد؟

Refactoring به فرایند تغییر ساختار داخلی کد با هدف بهبود کیفیت آن، بدون تغییر عمدی در رفتار قابل مشاهده برنامه گفته می‌شود. برای مثال، ممکن است یک متد طولانی به چند متد کوچک‌تر تقسیم شود یا نام‌های مبهم جای خود را به نام‌های روشن‌تر بدهند. در پروژه‌های C#، این فرایند به توسعه‌دهندگان کمک می‌کند کدهای موجود را به‌تدریج به ساختاری خواناتر و قابل نگهداری‌تر تبدیل کنند، بدون اینکه لازم باشد برنامه را از ابتدا بازنویسی کنند.

برای انجام Refactoring مؤثر، ابتدا باید بخش‌هایی از کد را که فهم یا تغییر آن‌ها دشوار است شناسایی کنید. سپس می‌توانید با اصلاح نام‌گذاری، ساده‌سازی شرط‌ها یا بازنگری در مسئولیت متدها و کلاس‌ها، ساختار را بهبود دهید. بررسی رفتار برنامه پیش و پس از تغییر نیز اهمیت دارد؛ تست‌های خودکار می‌توانند در تشخیص تغییرات ناخواسته کمک‌کننده باشند. کدنویسی تمیز تنها به یک مرحله اصلاح محدود نمی‌شود، بلکه نیازمند توجه مستمر به کیفیت ساختار کد هنگام اضافه کردن قابلیت‌ها و انجام تغییرات جدید است.

سرفصل مطالب آموزش ویدئویی اصول کدنویسی تمیز در سی شارپ

فصل اول: مقدمه دوره آموزشی
  • مقدمه دوره آموزشی
فصل دوم: چرا نوشتن کد های تمیز اهمیت دارد؟
  • مقدمه و معرفی دوره آموزشی
  • دلایل مهم برای نوشتن کد های تمیز
  • برنامه نویسان در واقع نویسنده هستند
  • بررسی قرارداد های این دوره آموزشی
  • منابع
  • جمع بندی
فصل سوم: آموزش اصول کد نویسی تمیز
  • مقدمه
  • سه اصل بسیار مهم در کد نویسی تمیز
  • استفاده کردن از ابزار مناسب برای کار مورد نظر
  • اهمیت دقت کردن به مرز ها و Native عمل کردن
  • هر تکنولوژی می تواند دردسر ساز باشد
  • به حداکثر رساندن نرخ Signal به Noise
  • بررسی اصل Don't Repeat Yourself
  • مفهوم Self-documenting Code
  • جمع بندی
فصل چهارم: مباحث مربوط به نامگذاری صحیح
  • مقدمه
  • چرا نامگذاری صحیح اهمیت دارد؟
  • مباحث مربوط به نامگذاری کلاس ها
  • مباحث مربوط به نامگذاری متد ها
  • بررسی مفهوم Rubber Ducking
  • جلوگیری کردن از بوجود آمدن Side Effect ها
  • بررسی علایم اخطار
  • جلوگیری از استفاده کردن از اختصارات
  • نامگذاری صحیح Boolean ها
  • توجه کردن به تقارن و یا Symmetry
  • جمع بندی
فصل پنجم: نوشتن جملات شرطی مناسب
  • مقدمه
  • مقایسه Boolean ها
  • انتساب Boolean ها
  • استفاده کردن از Positive Conditional ها
  • استفاده کردن از Ternary ها
  • Strongly Typed عمل کردن
  • استفاده نکردن از Magic Number ها
  • هندل کردن جملات شرطی پیچیده
  • استفاده از Polymorphism به جای Enum ها
  • Declarative عمل کردن
  • بررسی روش Table Driven Method
  • جمع بندی
فصل ششم: مباحث مربوط به نوشتن متد های تمیز
  • مقدمه
  • چه موقع یک تابع جدید ایجاد کنیم؟
  • چرا یک تابع جدید ایجاد کنیم؟ دلیل اول - جلوگیری از تکراری شدن کد
  • چرا یک تابع جدید ایجاد کنیم؟ دلیل دوم - تورفتگی بیش از حد
  • استفاده از روش Extract Method برای کاهش تورفتگی
  • استفاده کردن از روش Fail Fast برای کاهش تورفتگی
  • استفاده کردن از روش Return Early برای کاهش تورفتگی
  • استفاده از یک متد برای شفاف کردن قصد یک برنامه نویس
  • استفاده از یک متد برای انجام دادن، فقط یک کار
  • بررسی مفهوم Mayfly Variable ها
  • یک متد چند پارامتر می بایست داشته باشد؟
  • علایم مربوط به یک متد بیش از حد طولانی
  • مدیریت کردن سریع Exception ها
  • جمع بندی
فصل هفتم: مباحث مربوط به نوشتن Class های تمیز
  • مقدمه
  • چه موقع یک کلاس ایجاد کنیم؟
  • مبحث Cohesion در کلاس ها
  • مقایسه Low Cohesion و High Cohesion
  • استفاده از نامهای مناسب و ارتباط آنها با Cohesion
  • علایمی که نشان می دهد یک کلاس بیش از کوچک است
  • بررسی مفهوم Primitive Obsession
  • بررسی The Proximity Principle
  • بررسی The Outline Rule
  • جمع بندی
فصل هشتم: مباحث مربوط به نوشتن Comment های تمیز
  • مقدمه
  • Comment ها هم می توانند مفید باشند و هم می توانند مضر باشند
  • بررسی کامنت های Redundant
  • بررسی کامنت های Intent
  • بررسی کامنت های Apology
  • بررسی کامنت های Warning
  • بررسی کامنت های Zombie Code
  • بررسی کامنت های Divider
  • بررسی کامنت های Brace Tracker
  • بررسی کامنت های Bloated Header
  • بررسی کامنت های Defect Log
  • بررسی کامنت های تمیز
  • جمع بندی
فصل نهم: آموزش عملی Refactor کردن یک کد و تمیز کردن آن
  • مقدمه
  • بررسی کلاس Speaker
  • بررسی Code Metric ها
  • اهمیت Automated Test در Refactor کردن
  • مباحث مربوط به Refactor کردن کد
  • حذف کردن Comment های غیرضروری
  • Refactor کردن به Mayfly Variable ها
  • استفاده از Positive Conditional ها
  • پیاده سازی Guard Clause ها
  • تغییر نام دادن Variable ها
  • استفاده از Extract Method و Return Early
  • Refactor کردن Red Flag ها به متد ها
  • متمرکز کردن Guard Clause ها
  • استفاده کردن از روش Method Extract
  • استفاده کردن از روش Table Driven Method و Fail Fast
  • متمرکز کردن Validation ها
  • بازبینی کردن The Outline Rule
  • حل و فصل کردن خطاها
  • مقایسه کردن Code Analytics
  • نتایج Code Analytics
  • جمع بندی
فصل دهم: کد خود را تمیز نگه دارید
  • مقدمه
  • چه زمانی می بایست Refactor کرد؟
  • اهمیت Code Review و Code Pairing
  • آموزش مباحث فراگرفته شده به همکاران
  • اهمیت مبحث Broken Windows
  • بررسی قانون Boy Scout Rule
  • جمع بندی دوره آموزشی
دیدگاه کاربران

دیدگاه ها

برای ثبت دیدگاه ابتدا وارد حساب کاربری شوید.
هنوز دیدگاهی برای این محصول تایید نشده است.