اپلیکیشن اندرویدی فلشکارت آموزشی قوانین طلایی کدنویسی تمیز: SOLID
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره قوانین طلایی کدنویسی تمیز: SOLID
موضوع کلی: برنامه نویسی
موضوع میانی: کدنویسی تمیز (Clean Code)
📋 سرفصلهای دوره
- 1. چرا کد تمیز مهم است؟
- 2. کد تمیز چیست؟ تعاریف و مفاهیم اولیه
- 3. هزینه کد کثیف (بدهی فنی یا Technical Debt)
- 4. ذهنیت یک برنامهنویس حرفهای: فراتر از کدنویسی صرف
- 5. نقشه راه دوره: از مبانی تا تسلط بر اصول SOLID
- 6. هنر نامگذاری: استفاده از نامهای شفاف و با مفهوم
- 7. پرهیز از نامگذاریهای گمراهکننده و اطلاعات غلط
- 8. ایجاد تمایزهای معنادار در نامگذاری
- 9. انتخاب نامهای قابل تلفظ و قابل بحث
- 10. انتخاب نامهای قابل جستجو
- 11. قوانین نامگذاری کلاسها (اسم یا عبارت اسمی)
- 12. قوانین نامگذاری متدها (فعل یا عبارت فعلی)
- 13. پرهیز از انکودینگ و پیشوندهای غیرضروری (مانند نمادگذاری مجارستانی)
- 14. یک کلمه برای یک مفهوم: ثبات در نامگذاری
- 15. نامگذاری در دامنه مسئله در مقابل دامنه راهحل
- 16. توابع باید کوچک باشند: قانون اول
- 17. توابع باید فقط یک کار انجام دهند: قانون دوم
- 18. یک سطح از انتزاع در هر تابع
- 19. قانون پایینرفتن: خواندن کد مانند یک داستان
- 20. تعداد آرگومانهای توابع (هرچه کمتر، بهتر)
- 21. توابع تکآرگومانی (Monadic) و دوآرگومانی (Dyadic)
- 22. آرگومانهای پرچمی (Flag Arguments) یک نشانه بد است
- 23. توابع بدون عوارض جانبی (Side Effects)
- 24. جداسازی دستور و پرسوجو (Command Query Separation - CQS)
- 25. ترجیح استثناها (Exceptions) به کدهای خطا
- 26. اصل DRY: خودتان را تکرار نکنید
- 27. کامنتها جبرانکننده کد بد نیستند
- 28. کد باید خود معرف و گویا باشد
- 29. انواع کامنتهای خوب: حقوقی، توضیحی، TODO
- 30. انواع کامنتهای بد: مبهم، تکراری، گمراهکننده
- 31. قالببندی عمودی: تراکم، فاصله و گروهبندی مفاهیم
- 32. قالببندی افقی: طول خطوط و تورفتگی
- 33. قوانین قالببندی تیمی و استفاده از ابزارهای خودکار (Linters)
- 34. انتزاع دادهها (Data Abstraction)
- 35. عدم تقارن داده و شیء: تفاوت ساختار داده و شیء
- 36. قانون دیمیتر (Law of Demeter): کمتر صحبت کن، بیشتر عمل کن
- 37. اشیاء انتقال داده (Data Transfer Objects - DTO)
- 38. پنهانسازی ساختار داخلی و نمایش رفتار
- 39. استفاده از استثناها به جای کدهای بازگشتی
- 40. ابتدا بلوکهای `try-catch-finally` را بنویسید
- 41. استفاده از استثناهای کنترلنشده (Unchecked Exceptions)
- 42. ارائه زمینه و اطلاعات کافی در استثناها
- 43. از بازگرداندن `null` خودداری کنید
- 44. از ارسال `null` به عنوان آرگومان بپرهیزید
- 45. مقدمهای بر اصول طراحی SOLID
- 46. معرفی اصل تک مسئولیتی (Single Responsibility Principle - SRP)
- 47. یک کلاس، یک دلیل برای تغییر
- 48. شناسایی مسئولیتها در کد
- 49. نقض SRP: کلاسهای همهکاره (God Classes) و عواقب آن
- 50. مثال عملی: تفکیک یک کلاس با چند مسئولیت
- 51. ارتباط SRP با انسجام (Cohesion)
- 52. SRP در سطح متد و ماژول
- 53. معرفی اصل باز/بسته (Open/Closed Principle - OCP)
- 54. باز برای توسعه، بسته برای تغییر
- 55. استفاده از انتزاع (Abstraction) برای دستیابی به OCP
- 56. نقض OCP: زنجیرههای `if/else` یا `switch`
- 57. مثال عملی: جایگزینی `switch` با الگوی استراتژی (Strategy Pattern)
- 58. OCP و معماری مبتنی بر پلاگین
- 59. هزینه و فایده پیادهسازی OCP در پروژهها
- 60. معرفی اصل جایگزینی لیسکوف (Liskov Substitution Principle - LSP)
- 61. هر زیرکلاس باید قابل جایگزینی با کلاس والد خود باشد
- 62. شناسایی نقض LSP: تغییر رفتار غیرمنتظره
- 63. مثال کلاسیک: مشکل وراثت مربع و مستطیل
- 64. قراردادها: پیششرطها، پسشرطها و ثابتها (Invariants)
- 65. مثال عملی: اصلاح یک سلسلهمراتب وراثت مشکلساز
- 66. LSP و اهمیت طراحی درست سلسلهمراتب کلاسها
- 67. معرفی اصل تفکیک رابطها (Interface Segregation Principle - ISP)
- 68. کلاینتها نباید مجبور به پیادهسازی متدهایی شوند که استفاده نمیکنند
- 69. خطر رابطهای بزرگ و چاق (Fat Interfaces)
- 70. نقض ISP و عواقب آن بر روی کلاینتها
- 71. مثال عملی: شکستن یک رابط بزرگ به رابطهای کوچکتر و خاصتر
- 72. ISP و نقش آن در معماری ماژولار و کاهش وابستگی
- 73. تفکیک رابطها در زبانهای بدون اینترفیس صریح
- 74. معرفی اصل وارونگی وابستگی (Dependency Inversion Principle - DIP)
- 75. ماژولهای سطح بالا نباید به ماژولهای سطح پایین وابسته باشند
- 76. هر دو باید به انتزاعها وابسته باشند
- 77. انتزاعها نباید به جزئیات وابسته باشند، بلکه جزئیات باید به انتزاعها وابسته باشند
- 78. تزریق وابستگی (Dependency Injection) به عنوان یک مکانیزم برای پیادهسازی DIP
- 79. مثال عملی: حذف وابستگی مستقیم با استفاده از اینترفیس
- 80. کنترل معکوس (Inversion of Control - IoC) و ارتباط آن با DIP
- 81. مرزهای سیستم و معماری
- 82. استفاده از کلاسهای Boundary برای جداسازی
- 83. توسعه مبتنی بر تست (TDD) و قوانین سهگانه آن
- 84. کد تمیز و قابلیت تستپذیری
- 85. بازآرایی (Refactoring) چیست و چرا اهمیت دارد؟
- 86. بازآرایی ایمن: قدمهای کوچک و تستهای پشتیبان
- 87. نشانههای کد بد (Code Smells): معرفی و شناسایی
- 88. بوی بد کد: متدهای طولانی و کلاسهای بزرگ
- 89. بوی بد کد: دادههای ابتدایی وسواسی (Primitive Obsession)
- 90. بوی بد کد: زنجیرههای `switch`
- 91. بوی بد کد: صمیمیت نامناسب (Inappropriate Intimacy)
- 92. اصل KISS: آن را ساده نگه دار (Keep It Simple, Stupid)
- 93. اصل YAGNI: به آن نیاز نخواهی داشت (You Ain't Gonna Need It)
- 94. ترکیب به جای وراثت (Composition over Inheritance)
- 95. مفاهیم وابستگی (Coupling) و انسجام (Cohesion)
- 96. اصل "بگو، نپرس" (Tell, Don't Ask)
- 97. مقدمهای بر الگوهای طراحی (Design Patterns)
- 98. ارتباط SOLID با الگوی استراتژی (Strategy Pattern)
- 99. ارتباط SOLID با الگوی کارخانه (Factory Pattern)
- 100. ارتباط SOLID با الگوی دکوراتور (Decorator Pattern)
این اپلیکیشن فارسی برای یادگیری و مرور محتوای آموزشی از طریق فلشکارت طراحی شده است. کارتها را یکییکی مرور کنید، پاسخ پرسشها را به یاد بیاورید و نتیجه هر پاسخ را ثبت کنید. محتوای دوره پس از نصب درون برنامه در دسترس است تا برای مطالعه روزمره معمولاً به اتصال مداوم اینترنت نیاز نداشته باشید.
محتوای آموزشی در قالبهای متنوع ارائه میشود تا هم برای یادگیری مفاهیم جدید و هم برای تثبیت آموختهها قابل استفاده باشد.
- رابط کاربری فارسی و راستچین با فونت وزیر.
- تم روشن و تیره مطابق تنظیمات سیستم.
- صفحهبندی ساده برای انتخاب دوره و شروع مرور.
- نمایش تعداد دفعات مرور هر فصل.
- انتخاب چند فصل برای مرور همزمان.
- امکان تمرکز بر فصلهایی که هنوز مرور نشدهاند.
این اپلیکیشن برای دانشآموزان، دانشجویان، داوطلبان آزمونها و علاقهمندان به یادگیری طراحی شده است؛ بهویژه کسانی که میخواهند مطالب آموزشی را در زمانهای کوتاه مرور کنند، دانستههای خود را بسنجند و مطالعه منظمتری داشته باشند.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.