
درس شماره ک
درس شماره دو
درس شماره سه
درس شماره چهار
دوره عملی الگوها، اصول و تکنیکهای Clean Code
| محل برگزاری | مدرس | تاریخ شروع اولین جلسه | روز و ساعت | مدت زمان کل دوره | تعداد جلسات | هزینه ثبتنام زود هنگام | هزینه ثبتنام عادی | لینک ثبت نام | 
|---|---|---|---|---|---|---|---|---|
| آنلاین | مسعود بهرامی | ۹ اردیبهشت ۱۳۹۹ | ۵شنبهها ساعت ۱۵:۰۰ تا ۱۸:۰۰ | ۲۴ ساعت | ۸ جلسه ۳ ساعته | ۱۰۰۰۰۰۰ هزار تومان | ۱۴۰۰۰۰ هزار تومان | ثبت نام | 
معرفی دوره
این دوره با هدف آموزش مهمترین الگوها، اصول و روشهای Clean Code طراحی شده است. در این دوره ما به اصول حرفهای گری و استادکاری (Craftsmanship) در نرمافزار و لزوم اهمیت آن و ارتباط آن با Clean Code میپردازیم و همچنین بر اهمیت و لزوم اصول حرفهای گری در توسعه نرمافزار خواهیم پرداخت. سپس در قالب پروژه و تمرینها و چالشها به پیاده سازی مباحث و سرفصلای زیر خواهیم پرداخت.
در طی دوره از زبان #C برای پیادهسازی کدها استفاده میکنیم، اما مباحث و مطالب دوره برای هر زبان شیگرای دیگری نیز قابل استفاده و اعمال میباشد.
برای این دوره چالشها و مسائل مختلف و بسیار زیادی در نظر گرفته شده، و دانشجویان با حل کردن و پیاده سازی این چالشها و مسائل میتوانند با هدایت و آموزش معلم خود به تسلط بیشتر و بهتری بر مطالب ارائه شده دست پیدا کنند.
همچنین در طول دوره چندین جلسه رترو جهت بحث و تبادل نظر و تعمق بیشتر بصورت گروهی برگزار خواهد شد.
سرفصلهای دوره
- 
کد کثیف به چه معنی است؟
 - 
چرا باید کد را تمیز کنیم و تمیز نگه داریم؟
- دلایل و مزیتهای استفاده از اصول و قواعد Clean Code
 
 - 
Software Craftsmanship
- توسعه رفتار حرفه ای فردی و استادکاری
 - حرفهای گری، استادکاری و Clean Code
 
 - 
معیارهای و فاکتورهای کد خوب و بد
 - 
تبدیل کد بد به کد خود
 - 
شناسایی رایحههای بد در کد
- Mysterious Name
 - Duplicated Code
 - Long Function
 - Long Parameter List
 - Global Data
 - Mutable Data
 - Divergent Change
 - Shotgun Surgery
 - Feature Envy
 - Data Clumps
 - Primitive Obsession
 - Repeated Switches
 - Loops
 - Lazy Element
 - Speculative Generality
 - Temporary Field
 - Message Chains
 - Middle Man
 - Insider Trading
 - Large Class
 - Data Class
 - Refused Bequest
 - Comments
 - Alternative Classes with Different Interfaces
 
 - نگاهی دقیق تر به قانون Boy Scout جهت تمیز کردن تدریجی کدهای موجود
 - نام گذاری صحیح
- ضرورت و اهمیت انتخاب نام گذاری مناسب
 - نگاهی به نام گذاری متغیرها، متدها و کلاسها به عنوان یک ابزار ارتباطی بین اعضای تیم
 - معرفی اصول و قواعد نامگذاری برای متغیرها، متدها، کلاسها و اینترفیسها
 
 - بررسی و یادگیری نحوه ساختار بندی متدها در یک کلاس
 - اصول، قواعد و تکنیکهای نوشتن متدهای(توابع) تمیز
- Small!
 - بررسی مفهوم توابعی که فقط یک کار انجام میدهند
 - سطوح انتزاع در متدها و تاثیر آن در خوانایی، فهم و نگهداری کد
 - عبارت Switch
 - قواعد نامگذاری صحیح و انتخاب نامهای خوش تعریف برای توابع
 - آرگومانهای توابع
 - بررسی دقیق مفهوم Side-Effect
 - Command-Query Seqregation
 - بررسی اصل Don’t Repeat Yourself
 - نگاهی به مفهوم Fail fast در توابع
- مقایسه و بررسی برگرداندن Error Code یا پرتاب کردن Exception در توابع
 
 - Return Early
 - Mayfly variables
 
 - مقایسه سبک برنامه نویسی شیگرا و پروسیجرال
- Data Abstraction
 - جریان کنترل برنامه
 - Data/object anti-symmetry
 - The low of Demeter
 - Data Transfer Object
 - بررسی اصول برنامهنویسی شیگرا
- Messaging
 - Polymorphism
 - Encapsulation
 - Abstraction
 - Inheritence
 - مقایسه Inheritance و Composition
 
 
 - اصول، قواعد و تکنیکهای نوشتن کلاسهای تمیز
- Cohesion
 - Coupling
 - Single Responsibility Rule
 - Isolation from change
 - Outline Rule
 - Primitive Obsession
 - اصل Proximity در تعریف کلاسها
 - بررسی کلاسها از نقطه نظر اندازه
- کلاسهایی که بیش از حد کوچک هستند
 - کلاسهایی که بیش از حد بزرگ هستند
 
 - Separation of Main
 - Dependency Injection
 - Cross-Cutting Concern
 - Optimize Decision Making
 
 - بررسی دقیق اصول کامنت گذاری صحیح و تمیز در کد
- کامنت گذاری به عنوان یکی از رایحههای کد بد
 - احساسات درونی فرد توسعه دهنده و کامنتها
 - Bloated Header
 - کامنتهای خوب
 - کامنتهای بد
 - کامنتهای تمیز
 - Defect Log
 - کامنتهای بیش از اندازه بزرگ یا کوچک
 - کامنتهای اضافی و غیر ضرور
 - Zombie Code
 - Necessity and Crunch
 - تبدیل کامنتها به داکیومنت
 
 - بررسی فرمت بندی و استایل کد نویسی و تاثیر آن بر خوانایی و نگهداری کد
- منظور از فرمت و استایل کد نویسی چیست؟
 - چرا باید نسبت به فرمت کد حساس بود؟
 - فرمت بندی افقی
 - فرمت بندی عمودی
 - Team rules
 - قوانین فرمت و نگارش کد آقای Uncle Bob
 
 - بررسی مکانیزمها و تکنیکهای کنترل خطا در سطوح مختلف برنامه
- بررسی مشکلات نوع برگشتی نال توسط توابع
 - بررسی مکانیزمهای Exception خطا در لایههای مختلف برنامه
 - بررسی موارد استفاده نابجا و غیر صحیح از Exception
 - تعریف و مهیا کردن Context مناسب در Exeptionها
 - تریف کلاس Exception از دید استفاده کننده از کلاس
 
 - تستهای واحد (Unit Testing) و TDD
- سه قانون آقای Uncle Bob در مورد TDD
 - نوشتن تستهای تمیز
 - بررسی رابطه تعداد Assertها موجود در هر سناریوهای Test
 - Testهای تمیز
 - F.I.R.S.T
 
 - Emergent Design
- ضرورت و اهمیت Emergent Design در دنیای نرمافزار
 - اصول و قوانین Simple Design
 - طراحی کلاسها و متدهای کوچک
 
 - بررسی دقیق مسائل مرتبط با همزمانی و چند نخی از دید Clean Code
- بررسی باورها و برداشتهای غلط در مورد همزمانی و چند نخی
 - بررسی اصول Concurrency Defense
 - بررسی دقیق وابستگیها بین متدهایی که باید با هم Sync باشند
 - نوشتن تست برای بخشهای که از چند نخی استفاده میکنند
 - نوشتن تست برای بخشهای که از همزمانی استفاده میکنند
 
 - معرفی و آشنایی با مهمترین و متدوالترین Heuristicها در طراحی و برنامه نویسی شی گرا و کد تمیز
 - شناسایی و حذف dead codeها
 - تشخیص و حذف کدهای تکراری
 - تعریف پیادهسازی و محاسبه متریکهای ارزیابی سلامت کد و اطمینان از بهبود یافتن کدها
 - الگوهای کلاسیک طراحی شیگرا
- Creational Patters
- Abstract Factory
 - Builder
 - Factory Method
 - Prototype
 - Singleton
 
 - Structural Patters
- Adapter
 - Bridge
 - Campsite
 - Decorator
 - Façade
 - Flyweight
 - Proxy
 
 - Behavioral Patters
- Chain of Responsibility
 - Command
 - Interpreter
 - Iterator
 - Mediator
 - Memento
 - Observer
 - State
 - Strategy
 - Template Method
 - Visitor
 
 - نگاهی به Service Locator به عنوان یک ضد الگو
 - بررسی اصول ۵ گانه S.O.L.I.D
- اصل Single Responsibility
 - اصل Open-Closed
 - اصل Liskove Substitution
 - اصل Interface Segregation
 - اصل Dependency Inversion
 
 - General Responsibility Assignment Software Patterns(GRASP)
 
 - Creational Patters
 
این دوره مخصوص چه افرادی است :
- توسعهدهندگان
 - طراحان و معماران نرمافزار
 - CTOها و
 - Team Leader هایی
 
که دغدغه توسعه یک نرمافزار با کیفیت بالا را دارند.
پیش نیاز :
مخاطبین برای شرکت در این دوره نیاز میباشد که:
- تجربه برنامه نویسی داشته باشند.
 - با مفاهیم پایه و ابتدایی برنامه نویسی شیگرا آشنا باشند.
 
ابزارها، تکنولوژیهای و زبان برنامهنویسی مورد استفاده در دوره:
این دوره آموزشی به زبان برنامهنویسی و یا تکنولوژی خاصی وابسته نیست و محتوای آن قابل پیادهسازی در تمامی زبانهای برنامهنویسی شیگرا میباشد.
در این دوره برای پیادهسازی پروژهها و کدها از زبان برنامهنویسی #C و پلت فرم dot net core استفاده میکنیم.
برخی از لایبرریهای مورد استفاده در طول دوره:
- Moq
 - FakeItEasy
 - NSubstitute
 - NBuilder
 - FluentAssertions
 - Ncrunch
 
این محصول هیچ محتوایی جهت دریافت ندارد
You may also like…
1,400,000 تومان 1,000,000 تومان
- دسترسی به فایل محصول به صورت مادامالعمر
 - تضمین کیفیت آموزش ها
 - فعالسازی آنی لینک دانلود، پس از ثبت سفارش
 - فروش فقط از طریق دیجی آکادمی
 - به صورت رایگان یک یا چند آموزش را دریافت می کنید.
 
1,400,000 تومان 1,000,000 تومان
		
		
		
		
		
Reviews
There are no reviews yet.