اپلیکیشن اندرویدی فلشکارت آموزشی Object-Oriented Design Principles for Cleaner Code
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره Object-Oriented Design Principles for Cleaner Code
موضوع کلی: برنامه نویسی
موضوع میانی: کدنویسی تمیز (Clean Code)
📋 سرفصلهای دوره
- 1. مقدمهای بر کیفیت کد و بدهی فنی (Technical Debt)
- 2. هزینه نگهداری کدهای کثیف
- 3. کدنویسی تمیز (Clean Code) چیست؟
- 4. مروری بر اصول طراحی شیءگرا (Object-Oriented Design)
- 5. چرا طراحی شیءگرا برای کد تمیز حیاتی است؟
- 6. قانون پسر پیشاهنگ: محوطه اردو را تمیزتر از آنچه تحویل گرفتی، ترک کن
- 7. ذهنیت یک صنعتگر نرمافزار (Software Craftsman)
- 8. نامهای معنادار: شالوده اصلی کد خوانا
- 9. انتخاب نامهای نیتآشکار (Intention-Revealing Names)
- 10. پرهیز از اطلاعات غلط و کلمات بیمعنی در نامگذاری
- 11. قواعد نامگذاری برای کلاسها و اینترفیسها
- 12. قواعد نامگذاری برای متدها و متغیرها
- 13. توابع: قانون اول - کوچک بودن
- 14. توابع: قانون دوم - انجام فقط یک کار
- 15. سطوح انتزاع در یک تابع
- 16. آرگومانهای توابع: کمترین تعداد ممکن
- 17. جلوگیری از اثرات جانبی (Side Effects) در توابع
- 18. جداسازی دستور و پرسوجو (Command-Query Separation)
- 19. مدیریت خطا به جای برگرداندن کدهای خطا
- 20. کامنتها: چه زمانی و چگونه استفاده کنیم
- 21. تفاوت کامنتهای خوب و بد
- 22. حذف کامنتهای زائد و اطلاعات تاریخی
- 23. قالببندی کد برای خوانایی بیشتر
- 24. قالببندی عمودی: فاصلهگذاری و گروهبندی
- 25. قالببندی افقی: طول خطوط و همترازی
- 26. اشیاء و ساختمان دادهها: تفاوت در چیست؟
- 27. انتزاع (Abstraction): پنهانسازی جزئیات پیادهسازی
- 28. کپسولهسازی (Encapsulation): حفاظت از دادهها و رفتار
- 29. ارثبری (Inheritance): رابطه "Is-A"
- 30. چندریختی (Polymorphism): یک رابط، چندین پیادهسازی
- 31. انسجام (Cohesion): چرا کلاسها باید متمرکز باشند؟
- 32. هدف: دستیابی به انسجام بالا (High Cohesion)
- 33. وابستگی (Coupling): ارتباط بین کلاسها
- 34. هدف: دستیابی به وابستگی کم (Loose Coupling)
- 35. ترجیح ترکیب (Composition) به ارثبری
- 36. تفاوت اینترفیسها و کلاسهای انتزاعی
- 37. قانون دیمیتر (Law of Demeter): با غریبهها صحبت نکن
- 38. اصل بگو، نپرس (Tell, Don't Ask)
- 39. مقدمهای بر اصول SOLID
- 40. اصل مسئولیت واحد (Single Responsibility Principle - SRP)
- 41. یک کلاس، یک دلیل برای تغییر
- 42. شناسایی موارد نقض SRP و نشانههای آن
- 43. بازآفرینی (Refactoring) کد برای رسیدن به SRP
- 44. SRP در سطح متدها و ماژولها
- 45. اصل باز/بسته (Open/Closed Principle - OCP)
- 46. باز برای توسعه، بسته برای تغییر
- 47. دستیابی به OCP با استفاده از انتزاع و چندریختی
- 48. شناسایی موارد نقض OCP
- 49. الگوی طراحی استراتژی (Strategy Pattern) به عنوان نمونهای از OCP
- 50. اصل جایگزینی لیسکوف (Liskov Substitution Principle - LSP)
- 51. زیرنوعها باید قابل جایگزینی با نوع پایه خود باشند
- 52. مثال کلاسیک "مربع-مستطیل" و نقض LSP
- 53. شناسایی موارد نقض LSP در وراثت
- 54. طراحی قراردادها (Contracts) با در نظر گرفتن LSP
- 55. اصل تفکیک اینترفیس (Interface Segregation Principle - ISP)
- 56. کلاینتها نباید به متدهایی که استفاده نمیکنند وابسته باشند
- 57. نشانههای اینترفیسهای "چاق" (Fat Interfaces)
- 58. تقسیم اینترفیسهای بزرگ به اینترفیسهای کوچکتر و نقشمحور
- 59. ISP و تأثیر آن بر طراحی سیستم
- 60. اصل وارونگی وابستگی (Dependency Inversion Principle - DIP)
- 61. ماژولهای سطح بالا نباید به ماژولهای سطح پایین وابسته باشند
- 62. هر دو باید به انتزاعها وابسته باشند
- 63. جزئیات باید به انتزاعها وابسته باشند، نه برعکس
- 64. وارونگی کنترل (Inversion of Control - IoC)
- 65. تزریق وابستگی (Dependency Injection - DI)
- 66. انواع تزریق وابستگی: Constructor, Setter, Interface
- 67. کانتینرهای تزریق وابستگی (DI Containers)
- 68. جمعبندی SOLID: چگونه این اصول با هم کار میکنند
- 69. اصل خودت را تکرار نکن (Don't Repeat Yourself - DRY)
- 70. اصل سادگی (Keep It Simple, Stupid - KISS)
- 71. اصل به آن نیاز نخواهی داشت (You Ain't Gonna Need It - YAGNI)
- 72. اصل کمترین شگفتی (Principle of Least Astonishment - POLA)
- 73. جداسازی دغدغهها (Separation of Concerns - SoC)
- 74. توسعه آزمونمحور (Test-Driven Development - TDD) و کد تمیز
- 75. سه قانون TDD
- 76. نوشتن تستهای واحد تمیز
- 77. تستها به عنوان مستندات زنده
- 78. مرزها: کار با کدهای شخص ثالث (Third-Party Code)
- 79. استفاده از الگوهای آداپتور و فاساد در مرزها
- 80. یادگیری تستها (Learning Tests) برای کدهای خارجی
- 81. مدیریت خطاها و استثناها
- 82. استفاده از استثناهای بررسینشده (Unchecked Exceptions)
- 83. ارائه زمینه کافی در پیامهای خطا
- 84. از برگرداندن مقدار null خودداری کنید
- 85. مقدمهای بر الگوهای طراحی (Design Patterns)
- 86. الگوهای طراحی چگونه به کد تمیز کمک میکنند؟
- 87. الگوی فکتوری متد (Factory Method Pattern)
- 88. الگوی سینگلتون (Singleton Pattern): استفاده و سوءاستفاده
- 89. الگوی دکوراتور (Decorator Pattern)
- 90. الگوی آبزرور (Observer Pattern)
- 91. الگوی تمپلیت متد (Template Method Pattern)
- 92. همزمانی (Concurrency) و چالشهای آن
- 93. دفاع از همزمانی: کپسولهسازی دادههای مشترک
- 94. اجتناب از وابستگیهای زمانی (Temporal Coupling)
- 95. شناسایی بوهای بد کد (Code Smells)
- 96. بازآفرینی کد (Refactoring): چیستی، چرایی و زمان
- 97. تکنیکهای رایج بازآفرینی: استخراج متد (Extract Method)
- 98. تکنیکهای رایج بازآفرینی: تغییر نام (Rename)
- 99. تکنیکهای رایج بازآفرینی: بالا بردن متد (Pull Up Method)
- 100. اصول پکیجبندی: انسجام و وابستگی در سطح پکیج
این اپلیکیشن فارسی برای یادگیری و مرور محتوای آموزشی از طریق فلشکارت طراحی شده است. کارتها را یکییکی مرور کنید، پاسخ پرسشها را به یاد بیاورید و نتیجه هر پاسخ را ثبت کنید. محتوای دوره پس از نصب درون برنامه در دسترس است تا برای مطالعه روزمره معمولاً به اتصال مداوم اینترنت نیاز نداشته باشید.
محتوای آموزشی در قالبهای متنوع ارائه میشود تا هم برای یادگیری مفاهیم جدید و هم برای تثبیت آموختهها قابل استفاده باشد.
- رابط کاربری فارسی و راستچین با فونت وزیر.
- تم روشن و تیره مطابق تنظیمات سیستم.
- صفحهبندی ساده برای انتخاب دوره و شروع مرور.
- نمایش تعداد دفعات مرور هر فصل.
- انتخاب چند فصل برای مرور همزمان.
- امکان تمرکز بر فصلهایی که هنوز مرور نشدهاند.
این اپلیکیشن برای دانشآموزان، دانشجویان، داوطلبان آزمونها و علاقهمندان به یادگیری طراحی شده است؛ بهویژه کسانی که میخواهند مطالب آموزشی را در زمانهای کوتاه مرور کنند، دانستههای خود را بسنجند و مطالعه منظمتری داشته باشند.
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.