دوره عملی الگوها، اصول و تکنیک‌های Clean Code

Clean OOP Code
تصویر شاخص
تقویم آموزشی
درس شماره ک
12/12/1399الی14/12/1399
درس شماره دو
15/12/1399الی16/12/1399
درس شماره سه
16/12/1399الی17/12/1399
درس شماره چهار
18/12/1399الی19/12/1399
سوالات متداول

عنوان سوال یک

پاسخ سوال یک

عنوان سوال دو

پاسخ سوال دو

دوره عملی الگوها، اصول و تکنیک‌های 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)

 


این دوره مخصوص چه افرادی است :

  • توسعه‌دهندگان
  • طراحان و معماران نرم‌افزار
  • CTOها و
  • Team Leader هایی

که دغدغه توسعه یک نرم‌افزار با کیفیت بالا را دارند.


پیش نیاز :

مخاطبین برای شرکت در این دوره نیاز می‌باشد که:

  • تجربه برنامه نویسی داشته باشند.
  • با مفاهیم پایه و ابتدایی برنامه نویسی شی‌گرا آشنا باشند.

 

ابزارها، تکنولوژی‌های و زبان برنامه‌نویسی مورد استفاده در دوره:

این دوره آموزشی به زبان برنامه‌نویسی و یا تکنولوژی خاصی وابسته نیست و محتوای آن قابل پیاده‌سازی در تمامی زبان‌های برنامه‌نویسی شی‌گرا می‌باشد.

در این دوره برای پیاده‌سازی پروژه‌ها و کد‌ها از زبان برنامه‌نویسی #C و پلت فرم dot net core استفاده می‌کنیم.

برخی از لایبرری‌های مورد استفاده در طول دوره:

  • Moq
  • FakeItEasy
  • NSubstitute
  • NBuilder
  • FluentAssertions
  • Ncrunch

این محصول هیچ محتوایی جهت دریافت ندارد

Reviews

There are no reviews yet.

Be the first to review “دوره عملی الگوها، اصول و تکنیک‌های Clean Code”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

You may also like…

قیمت :

1,400,000 تومان 1,000,000 تومان

امتیازی ثبت نشده است
سطح آموزش مقدماتی
تعداد دانشجو : 50
مدت دوره: 24:00ساعتتاریخ انتشار: 21 مهر 1398آخرین بروزرسانی: 21 تیر 1403تعداد بازدید: 3311
قوانین و مزایای استفاده

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

مسعود بهرامی

مسعود بهرامی هستم. توسعه دهنده و معمار نرم‌افزار. بیش از 8 سال سابقه توسعه نرم‌افزار در زمینه‌ها و مقیاس های مختلف را دارم. به عنوان مشاور با تیم‌ها و سازمان‌های مختلفی کار کرده‌ام.
علاقمند و فعال در حوزه ی سیستم‌های توزیع شده و معماری مایکروسرویس ها هستم.
ابزارهای من در طراحی و پیاده سازی نرم افزار، اینها هستند
DDD, EventStorming, BDD, TDD, CQRS, Event Sourcing.
قیمت :

1,400,000 تومان 1,000,000 تومان