پرووید
منو

آموزش برنامه نویسی تابعی Functional Programming در سی شارپ

زبان: فارسی (دوبله شده)مترجم: پروویددوبلر: پروویدسطح: پیشرفتهمدت زمان: 03:29:08تعداد ویدئوها: 70فایل های پروژه: ناموجود
قیمت:۳٬۹۹۹٬۰۰۰ تومان
این آموزش بخشی از پکیج کامل آموزش سی شارپ (#C) پیشرفته است که می توانید از تمامی آموزش های آن دیدن کنید.

آموزش برنامه نویسی تابعی Functional Programming در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی اعمال اصول برنامه نویسی تابعی در سی شارپ است که با نام اصلی Applying Functional Principles in Csharp از شرکت Pluralsight منتشر شده است.

برنامه نویسی تابعی چیست؟

برنامه نویسی تابعی از میان سه مدل برنامه نویسی عمده قدیمیترین آنهاست.  اولین زبان برنامه نویسی تابعی APL بود که در سال 1955 تقریبا یک سال قبل  از فورترن ابداع شد. امروزه وجود برنامه نویسی تابعی برای حل مشکلاتی پیچیده تر اثبات شده و میتوان با آن برنامه های سده تر را نیز به وجود آورد.

Exceptions and Readability - نمونه ای از بخش Refactoring Away from Exceptions در آموزش برنامه نویسی تابعی Functional Programming در سی شارپ
نمونه ای از بخش «Refactoring Away from Exceptions» در آموزش برنامه نویسی تابعی Functional Programming در سی شارپ

برنامه نویسی تابعی خالص تمام برنامه ها را به صورت مجموعه ای از توابع که میتوانند آرگومانهایی را دیافت و مقادیری را برگردانند نگاه میکند و بر خلاف مدلهای شی گرا و دستوری اثرات جانبی ندارد و به جای حلقه تکرار از حلقه های بازگشتی استفاده میکند.

برنامه نویسی تابعی در سی شارپ

با ظهور LINQ در دات نت، زبان برنامه نویسی سی شارپ بیش از پیش تحت تاثیر مفاهیم برنامه نویسی تابعی قرار گرفت. با این وجود، برنامه نویسی تابعی در سی شارپ به استفاده از LINQ و Extension Method ها محدود نمی شود.

The Billion-dollar Mistake - نمونه ای از بخش Avoiding Nulls with the Maybe Type در آموزش برنامه نویسی تابعی Functional Programming در سی شارپ
نمونه ای از بخش «Avoiding Nulls with the Maybe Type» در آموزش برنامه نویسی تابعی Functional Programming در سی شارپ

قابلیت های دیگر سی شارپ که البته به صورت Native در سی شارپ وجود ندارند امکان استفاده از مفاهیم برنامه نویسی تابعی را در سی شارپ فراهم می کنند. در این بسته ی آموزشی با مفهوم برنامه نویسی تابعی و مفاهیم مرتبط با آنها و البته پیاده سازی عملی آنها در سی شارپ آشنا خواهید شد.

اصول Immutability و مدیریت وضعیت در سی شارپ

در توسعه نرم‌افزار، تغییر وضعیت اشیا در بخش‌های مختلف برنامه می‌تواند ردیابی رفتار کد و شناسایی خطاها را دشوار کند. Immutability یا تغییرناپذیری رویکردی است که در آن داده‌ها پس از ایجاد، به‌صورت مستقیم تغییر نمی‌کنند و برای نمایش وضعیت جدید معمولاً مقدار یا شیء جدیدی ساخته می‌شود. استفاده از این اصل در C# می‌تواند وابستگی میان بخش‌های مختلف برنامه را کاهش دهد و درک جریان داده را ساده‌تر کند، به‌ویژه در پروژه‌هایی که منطق پیچیده‌تری دارند.

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

مدیریت خطاها بدون وابستگی بیش از حد به Exception

مدیریت خطا یکی از جنبه‌های مهم طراحی نرم‌افزارهای قابل نگهداری است. در C#، Exceptionها برای نمایش شرایط استثنایی کاربرد دارند، اما استفاده از آن‌ها برای تمام خطاهای قابل پیش‌بینی ممکن است جریان عادی اجرای برنامه را پیچیده کند. برنامه‌نویسی تابعی رویکردهای دیگری برای نمایش نتیجه عملیات و انتقال اطلاعات مربوط به شکست ارائه می‌دهد. با استفاده از این الگوها، می‌توان موفقیت یا ناموفق بودن یک عملیات را به‌صورت بخشی از نتیجه آن در نظر گرفت و مدیریت خطا را روشن‌تر ساخت.

در این رویکرد، به‌جای تکیه کامل بر پرتاب و دریافت Exception، می‌توان نتایج را با انواع داده‌ای مشخص نمایش داد تا فراخواننده تابع بتواند حالت‌های مختلف را بررسی کند. چنین ساختاری به‌ویژه در اعتبارسنجی ورودی‌ها و عملیات‌هایی که احتمال شکست قابل انتظار دارند، مفید است. تفکیک خطاهای پیش‌بینی‌پذیر از شرایط واقعاً استثنایی، به خوانایی کد کمک می‌کند و باعث می‌شود مسیرهای موفقیت و شکست در طراحی برنامه به شکل واضح‌تری مشخص شوند.

استفاده از Maybe برای مدیریت مقادیر Null در C#

مقادیر Null یکی از منابع رایج خطا در برنامه‌های شی‌گرا هستند. زمانی که برنامه‌نویس فرض می‌کند یک مقدار همیشه وجود دارد، ممکن است دسترسی به مقدار ناموجود به خطا منجر شود. الگوی Maybe در برنامه‌نویسی تابعی راهی برای نمایش صریح امکان وجود داشتن یا نداشتن یک مقدار است. به‌جای انتقال مستقیم مقداری که ممکن است Null باشد، می‌توان این وضعیت را با یک ساختار مشخص نمایش داد تا مصرف‌کننده داده ناچار باشد حالت‌های مختلف را در نظر بگیرد.

استفاده از چنین الگویی به طراحی توابعی کمک می‌کند که قرارداد روشن‌تری درباره خروجی خود دارند. وقتی احتمال نبودن داده در ساختار نوع داده منعکس می‌شود، تشخیص نقاطی که نیازمند بررسی هستند آسان‌تر خواهد بود. این روش می‌تواند در بخش‌هایی از برنامه که با جست‌وجوی اطلاعات، داده‌های اختیاری یا ورودی‌های ناقص سروکار دارند، مفید باشد. آشنایی با Maybe به توسعه‌دهندگان C# کمک می‌کند مدیریت مقادیر Null را به‌صورت ساختاریافته‌تری انجام دهند و از فرض‌های ضمنی در کد بکاهند.

کاهش Primitive Obsession با طراحی بهتر مدل داده

Primitive Obsession به استفاده بیش از حد از انواع داده ساده مانند string، int و decimal برای نمایش مفاهیمی اشاره دارد که از نظر دامنه برنامه معنای مشخصی دارند. برای مثال، شناسه یک کاربر، آدرس ایمیل و مبلغ مالی ممکن است همگی با انواع داده ساده نمایش داده شوند، اما قواعد و محدودیت‌های متفاوتی داشته باشند. هنگامی که این مفاهیم بدون ساختار مشخص در سراسر برنامه پخش می‌شوند، اعتبارسنجی و حفظ سازگاری داده‌ها دشوارتر می‌شود.

ایجاد انواع داده اختصاصی برای مفاهیم مهم دامنه می‌تواند قواعد مربوط به آن‌ها را در یک محل متمرکز کند و از اشتباه در استفاده از مقادیر جلوگیری کند. در C#، این رویکرد را می‌توان با استفاده از کلاس‌ها، ساختارها و انواع داده مناسب پیاده‌سازی کرد. ترکیب این روش با اصول برنامه‌نویسی تابعی به ایجاد مدل‌هایی روشن‌تر کمک می‌کند که رفتار و محدودیت‌های داده را بهتر نشان می‌دهند. نتیجه، کدی است که فهم آن برای توسعه‌دهندگان ساده‌تر است و تغییرات آینده را بهتر مدیریت می‌کند.

سرفصل مطالب آموزش ویدئویی برنامه نویسی تابعی در سی شارپ

فصل اول: معرفی دوره ی آموزشی
  • مقدمه ی بسته ی آموزشی
فصل دوم: مقدمه
  • شروع به کار
  • سرفصل بسته ی آموزشی و پیش نیاز ها
  • Functional Programming چیست؟
  • چرا باید از Functional Programming استفاده کنیم؟
  • جمع بندی
فصل سوم: ریفکتور کردن به سمت یک معماری Immutable
  • مقدمه
  • تعریف واژگان مورد استفاده
  • چرا Immutability اهمیت دارد؟
  • مفهوم Mutability و Temporal Coupling
  • محدودیت های Immutability
  • نحوه ی صحیح برخورد با Side Effect ها
  • معرفی مثال مورد نظر
  • پیاده سازی Mutable
  • ریفکتور کردن اولین متد
  • ریفکتور کردن دومین متد
  • پیاده سازی یک Mutable Shell
  • ریفکتور کردن به یک معماری Immutable
  • جمع بندی
فصل چهارم: ریفکتور کردن دور از Exception ها
  • مقدمه
  • ارتباط Exception ها و Readability
  • Use Case های Exception ها
  • اصل Fail Fast
  • مکان صحیح Catch کردن Exception ها
  • کلاس Result
  • ارتباط کلاس Result و CQS
  • ریفکتور کردن Exception ها
  • جمع بندی
فصل پنجم: جلوگیری از Primitive Obsession
  • مقدمه
  • تعریف Primitive Obsession
  • نحوه ی صحیح رفع کردن Primitive Obsession
  • ارتباط Primitive Obsession و برنامه نویسی تدافعی
  • محدودیت های Primitive Obsession
  • زمان صحیح تبدیل کردن Primitive Type ها به Value Object ها
  • ریفکتور کردن Primitive Obsession
  • جمع بندی
فصل ششم: جلوگیری از Null با نوع داده ای Maybe
  • مقدمه
  • معرفی یک اشتباه بسیار بزرگ
  • خاصیت Non-nullability در سطح زبان
  • بهبود دادن شرایط یک اشتباه بزرگ
  • معرفی و استفاده از نوع داده ای Maybe
  • محدودیت ها
  • جمع بندی
فصل هفتم: مدیریت Failure ها و Input Error ها به روش تابعی
  • مقدمه
  • روش سنتی مدیریت کردن Failure ها و Input Error ها
  • ریفکتور کردن و استفاده از نوع داده ای Result و Maybe
  • معرفی روش برنامه نویسی Railway-Oriented
  • جمع بندی
فصل هشتم: ترکیب تمامی روش ها
  • مقدمه
  • معرفی Domain Model
  • معرفی  Application Code
  • ریفکتور کردن Exception ها
  • ریفکتور کردن Primitive Obsession
  • ریفکتور کردن و رفتن به سمت کدهای Explicit
  • Explicit کردن Null ها
  • پیاده سازی Reference Data در قالب Code
  • استفاده از Railway-Oriented Programming
  • جمع بندی
  • لیست منابع
  • جمع بندی بسته ی آموزشی
دیدگاه کاربران

دیدگاه ها

برای ثبت دیدگاه ابتدا وارد حساب کاربری شوید.
هنوز دیدگاهی برای این محصول تایید نشده است.