اگر احساس میکنید که طراحی سنتی شی گرا مانع پیشرفت شما میشود، این دوره به شما یاد میدهد که چگونه از مدلسازی و طراحی عملکردی استفاده کنید تا سرعت توسعه و انعطاف پذیری مدل حاصل را بهبود بخشید.
آنچه یاد میگیری:
در سالهای اخیر، ما شاهد ویژگیهای زبان #C هستیم که علاوه بر هسته شیگرای عالی، عناصر نحوی عملکردی بیشتری را در خود جای داده است. اما همانطور که پیش میرود، این نوآوریها قبل از اینکه بتوانیم از مزایایی که برای طراحی به ارمغان میآورند لذت ببریم، نیاز به درک صحیح دارند. در این دوره، سی شارپ کاربردی، طراحی انواع دامنه و رفتار با استفاده از تکنیکهای کاربردی و نحو جدید سی شارپ را یاد میگیرید، در حالی که همچنان در زبان برنامهنویسی سی شارپ باقی میمانید. ابتدا، عناصر اصلی را بررسی خواهید کرد که یک طراحی را کاربردی میکنند، برخلاف شی گرا (بهعلاوه!). در مرحله بعد، خواهید دید که چگونه هر یک از عناصر و تکنیکهای برنامه نویسی کاربردی به نحو زبان #C نگاشت میشوند. در نهایت، یاد خواهید گرفت که چگونه مدلهای دامنهای با پیچیدگی قابلتوجه بسازید، در حالی که به روشها و روشهای برنامهنویسی عملکردی پایبند هستید. وقتی این دوره را به پایان رساندید، مهارتها و دانش برنامه نویسی کاربردی به کار رفته در سی شارپ را خواهید داشت که برای طراحی و پیادهسازی برنامههای کاربردی تجاری در دنیای واقعی لازم است.
نمونه ویدیوی آموزشی ( زیرنویسها جدا از ویدیو است و میتوانید آنرا نمایش ندهید ) :
[ENGLISH]
01 Course Overview [2mins]
01-01 Course Overview [2mins]
02 Putting C# Into Functional Perspective [25mins]
02-01 Getting Started [5mins]
02-02 Initializing the Demo Environment [2mins]
02-03 Quick Prototyping with Functional Extensions [7mins]
02-04 Composing Functions [7mins]
02-05 What Follows in This Course [3mins]
02-06 Summary [1mins]
03 Introducing Functional Types and Functions [28mins]
03-01 Modeling the Domain with Records [5mins]
03-02 Defining Functions that Apply to a Type [7mins]
03-03 Viewing an Object as a Factory of Other Objects [3mins]
03-04 Designing Composable Functions [6mins]
03-05 Designing Composable Types [3mins]
03-06 Avoiding Throwing Exceptions from the Domain Model [3mins]
03-07 Summary [1mins]
04 Modeling the Domain with Types [31mins]
04-01 Modeling the Business with Types [4mins]
04-02 Attaining a Deep Type Model [5mins]
04-03 Appreciating Separation of Types and Functions [7mins]
04-04 Setting up an Application with Functional Model [6mins]
04-05 Defining Functions on Top of Types [7mins]
04-06 Summary [2mins]
05 Designing Pure Functions [31mins]
05-01 Understanding the Separation of Unrelated Functions [6mins]
05-02 Defining a Functional-style Requirement [4mins]
05-03 Applying Functional Decomposition [7mins]
05-04 Pushing Functional Decomposition to the Limit [7mins]
05-05 Designing the Bitmap [4mins]
05-06 Summary [3mins]
06 Using Partially Applied Functions in Modeling [34mins]
06-01 Surviving the Parameterization Hell [6mins]
06-02 Identifying Some Function Parameters as a Design Problem [4mins]
06-03 Introducing Partially-applied Functions [6mins]
06-04 Implementing Partial Function via Delegates [6mins]
06-05 Relating delegate to Func and Action Types [3mins]
06-06 Separating Configuration from Function Parameters [7mins]
06-07 Summary [2mins]
07 Substituting Inheritance with Discriminated Unions [30mins]
07-01 Understanding the Need for Discriminated Unions [6mins]
07-02 Mimicking a Discriminated Union in C# [3mins]
07-03 Defining a Function on a Discriminated Union [4mins]
07-04 Improving Readability When Using a Discriminated Union [5mins]
07-05 Using Discriminated Unions in Deep Domain Modeling [3mins]
07-06 Avoiding Mistakes in Types Design [6mins]
07-07 Summary [3mins]
08 Modeling Missing Objects [33mins]
08-01 Identifying the Problem with Missing Objects [7mins]
08-02 Inventing Optional Objects [5mins]
08-03 Consuming Optional Objects [4mins]
08-04 Implementing the Option- Type [7mins]
08-05 Consuming the Option- Type [8mins]
08-06 Summary [2mins]
09 Modeling Complex Domain Objects [37mins]
09-01 Introducing Nondestructive Mutation [5mins]
09-02 Declaring Required Properties in an Immutable Design [4mins]
09-03 Understanding the Need for Collections [4mins]
09-04 Designing Immutable Objects That Contain Collections [6mins]
09-05 Working with Freezable Objects [6mins]
09-06 Encapsulating Immutable Collections [6mins]
09-07 Summary [2mins]
09-08 Course Summary [4mins]
[فارسی]
01 بررسی اجمالی دوره [2 دقیقه]
01-01 بررسی اجمالی دوره [2 دقیقه]
02 قرار دادن #C در دیدگاه عملکردی [25 دقیقه]
02-01 شروع به کار [5 دقیقه]
02-02 راه اندازی محیط آزمایشی [2 دقیقه]
02-03 نمونهسازی سریع با برنامههای افزودنی کاربردی [7 دقیقه]
02-04 توابع آهنگسازی [7 دقیقه]
02-05 آنچه در این دوره دنبال میشود [3 دقیقه]
02-06 خلاصه [1 دقیقه]
03 معرفی انواع و عملکردهای کاربردی [28 دقیقه]
03-01 مدلسازی دامنه با رکورد [5 دقیقه]
03-02 تعریف عملکردهایی که برای یک نوع اعمال میشوند [7 دقیقه]
03-03 مشاهده یک شی به عنوان کارخانه اشیاء دیگر [3 دقیقه]
03-04 طراحی توابع قابل ترکیب [6 دقیقه]
03-05 طراحی انواع قابل ترکیب [3 دقیقه]
03-06 اجتناب از پرتاب استثناها از مدل دامنه [3 دقیقه]
03-07 خلاصه [1 دقیقه]
04 مدلسازی دامنه با انواع [31 دقیقه]
04-01 مدلسازی کسب و کار با انواع [4 دقیقه]
04-02 دستیابی به یک مدل نوع عمیق [5 دقیقه]
04-03 قدردانی از تفکیک انواع و عملکردها [7 دقیقه]
04-04 راه اندازی یک برنامه با مدل عملکردی [6 دقیقه]
04-05 تعریف توابع در بالای انواع [7 دقیقه]
04-06 خلاصه [2 دقیقه]
05 طراحی توابع خالص [31 دقیقه]
05-01 درک جداسازی توابع نامرتبط [6 دقیقه]
05-02 تعریف یک نیاز به سبک عملکردی [4 دقیقه]
05-03 اعمال تجزیه عملکردی [7 دقیقه]
05-04 فشار دادن تجزیه عملکردی به حد مجاز [7 دقیقه]
05-05 طراحی بیت مپ [4 دقیقه]
05-06 خلاصه [3 دقیقه]
06 استفاده از توابع جزئی اعمال شده در مدلسازی [34 دقیقه]
06-01 زنده ماندن از جهنم پارامترسازی [6 دقیقه]
06-02 شناسایی برخی پارامترهای تابع به عنوان یک مشکل طراحی [4 دقیقه]
06-03 معرفی توابع جزئی اعمال شده [6 دقیقه]
06-04 اجرای عملکرد جزئی از طریق نمایندگان [6 دقیقه]
06-05 ارتباط نماینده با انواع عملکرد و عملکرد [3 دقیقه]
06-06 جداسازی پیکربندی از پارامترهای عملکرد [7 دقیقه]
06-07 خلاصه [2 دقیقه]
07 جایگزینی ارث با اتحادیههای تبعیض آمیز [30 دقیقه]
07-01 درک نیاز به اتحادیههای تبعیض آمیز [6 دقیقه]
07-02 تقلید از اتحادیه تبعیض آمیز در سی شارپ [3 دقیقه]
07-03 تعریف یک تابع در اتحادیه تبعیض آمیز [4 دقیقه]
07-04 بهبود خوانایی هنگام استفاده از اتحادیه تبعیض آمیز [5 دقیقه]
07-05 استفاده از اتحادیههای تبعیض آمیز در مدلسازی دامنه عمیق [3 دقیقه]
07-06 اجتناب از اشتباه در طراحی انواع [6 دقیقه]
07-07 خلاصه [3 دقیقه]
08 مدلسازی اشیاء گمشده [33 دقیقه]
08-01 شناسایی مشکل اشیاء گمشده [7 دقیقه]
08-02 اختراع اشیاء اختیاری [5 دقیقه]
08-03 مصرف اشیاء اختیاری [4 دقیقه]
08-04 پیادهسازی گزینه«T» Type [7mins]
08-05 مصرف گزینه«T» نوع [8 دقیقه]
08-06 خلاصه [2 دقیقه]
09 مدلسازی اشیاء دامنه پیچیده [37 دقیقه]
09-01 معرفی جهش غیر مخرب [5 دقیقه]
09-02 اعلام ویژگیهای مورد نیاز در یک طرح تغییرناپذیر [4 دقیقه]
09-03 درک نیاز به مجموعهها [4 دقیقه]
09-04 طراحی اشیاء تغییرناپذیر که دارای مجموعه هستند [6 دقیقه]
09-05 کار با اشیاء قابل انجماد [6 دقیقه]
09-06 کپسوله کردن مجموعههای تغییرناپذیر [6 دقیقه]
09-07 خلاصه [2 دقیقه]
09-08 خلاصه دوره [4 دقیقه]
زوران هوروات مشاور اصلی در شرکت مشاوره کدینگ کلاه ایمنی، سخنران و نویسنده بیش از 100 مقاله، و مربی مستقل در پشته فناوری دات نت است. او اغلب در کنفرانسها و گروههای کاربری صحبت میکند، سبک توسعه شیگرا و شیوهها و تکنیکهای کدنویسی تمیز را ترویج میکند که طول عمر برنامههای تجاری پیچیده را بهبود میبخشد.