آموزش Ultimate C# Masterclass برای سال 2024

Ultimate C# Masterclass for 2024

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
توضیحات دوره: دوره برنامه نویسی عمیق دات نت از مقدماتی تا پیشرفته. روی کد تمیز، عملکرد و تمرین تمرکز کنید. شما درک عمیقی از سی شارپ به دست خواهید آورد. نحوه نوشتن کد سی شارپ با کارایی بالا را خواهید فهمید. شما اصول برنامه نویسی شی گرا را خواهید فهمید مفیدترین الگوهای طراحی را خواهید آموخت. شما یاد خواهید گرفت که کدهایی با کیفیت عالی بنویسید. شما دانش لازم برای مصاحبه شغلی #C را به دست خواهید آورد. با حل تمرینات در مرورگر و همچنین با ایجاد پروژه های پیشرفته، مهارت های خود را تمرین خواهید کرد. شما یاد خواهید گرفت که چگونه از ویژوال استودیو مانند یک حرفه ای استفاده کنید. شما یاد خواهید گرفت که چگونه با استفاده از کتابخانه های NUnit و Moq تست های واحد ایجاد کنید: نیازی به تجربه برنامه نویسی نیست. من هر آنچه را که باید بدانید به شما یاد خواهم داد. یک کامپیوتر (Windows/macOS) با دسترسی به اینترنت. هیچ نرم افزار پولی مورد نیاز نیست. تمامی ابزارهای استفاده شده در این دوره رایگان هستند.

به دوره آموزشی "Ultimate C# Masterclass" خوش آمدید! آیا آماده هستید تا دانش و حرفه خود را به سطح بعدی ببرید؟


43 ساعت ویدیوی درخواستی، 62 تمرین کدنویسی، 71 آزمون و 15 تکلیف. همه اینها به شما کمک می کند مانند یک حرفه ای شروع به کدنویسی در سی شارپ کنید.


من یک مدیر فنی دات نت با بیش از 10 سال تجربه حرفه ای هستم. من در هر مرحله به شما در این سفر کمک خواهم کرد، فرقی نمی‌کند شما یک مبتدی کامل باشید که قبلاً هرگز کدنویسی نکرده‌اید یا توسعه‌دهنده‌ای که می‌خواهید به سطح بعدی بروید. ما از اصول اولیه شروع خواهیم کرد، اما در اینجا متوقف نمی شویم.


من نه تنها به شما نحوه کدنویسی را آموزش می‌دهم، بلکه نحوه کدنویسی را نیز به شما آموزش می‌دهم. کد پاک و طراحی خوب اولویت‌های ما خواهند بود و الگوهای طراحی در عمل نشان داده می‌شوند، نه به‌عنوان مفاهیم انتزاعی که استفاده از آنها در چالش‌های زندگی غیرممکن به نظر می‌رسد. Refactoring چیزی است که ما همیشه تمرین می کنیم.


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


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


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


این دوره با 30 روز ضمانت بازگشت وجه ارائه می شود. اگر راضی نیستید، می توانید آن را برگردانید و تمام پول خود را پس بگیرید، بدون سوال. به عبارت دیگر شما با خرید این دوره هیچ خطری را تهدید نمی کنید. شما چیزی برای از دست دادن ندارید و دانشی که به دست خواهید آورد ممکن است شغل شما را به سطح بالاتری برساند.


پس چرا درنگ کنید؟ در این دوره به من بپیوندید و مانند یک حرفه ای شروع به کدنویسی کنید.


سرفصل ها و درس ها

معرفی Introduction

  • خوش آمدی! اطلاعات اولیه و نحوه دریافت کمک Welcome! Basic information & how to get help

  • 46 ثانیه در مورد مربی شما 46 seconds about your instructor

  • 72 ثانیه در مورد اینکه این دوره چیست 72 seconds about what this course is

  • 105 ثانیه در مورد آنچه این دوره نیست 105 seconds about what this course isn’t

  • 97 ثانیه درباره تمرین آنچه یاد می گیرید 97 seconds about practicing what you learn

  • 112 ثانیه در مورد بهینه سازی زمان 112 seconds about time optimization

  • نصب انجمن ویژوال استودیو Installing Visual Studio Community

  • دسترسی به کد Accessing the code

  • منابعی که می توانید دانلود کنید Resources you can download

  • عیب یابی مشکلات تمرین های کدنویسی Coding exercises issues troubleshooting

C# Fundamentals C# Fundamentals

  • معرفی بخش Section introduction

  • اولین برنامه سی شارپ ما Our first C# program

  • از یک فایل متنی گرفته تا یک برنامه اجرایی From a text file to an executable program

  • مهمترین مهارت برنامه نویس Programmer's most important skill

  • هدف برای این بخش The goal for this section

  • متغیرها Variables

  • نامگذاری متغیرها و معرفی کد پاک Naming variables & introduction to clean code

  • متغیرها Variables

  • اپراتورها Operators

  • متغیرهای تایپ شده ضمنی Implicitly typed variables

  • ورودی کاربر User input

  • اشکال زدایی با نقاط شکست Debugging with breakpoints

  • مقدمه تمرین های کدنویسی Coding exercises introduction

  • متغیرها و عملگرها Variables and operators

  • نظرات Comments

  • نوع بولی. عملگرهای نفی منطقی، برابری، مقایسه و مدول Boolean type. Logical negation, equality, comparison, and modulo operators

  • Bools & Operators Bools & operators

  • عملگرهای منطقی AND و OR AND and OR logical operators

  • نوع بولی و عملگرها Boolean type and operators

  • عبارت شرطی if/else if/else conditional statement

  • عبارت شرطی if/else if/else conditional statement

  • دامنه متغیرهای محلی The scope of local variables

  • بولی ها، عملگرها و دستور شرطی if/else. Booleans, operators and if/else conditional statement.

  • روش ها - قسمت 1 - روش های خالی Methods - part 1 - void methods

  • روش ها - قسمت 2 - روش های غیر باطل Methods - part 2 - non-void methods

  • روش ها - روش AbsoluteOfSum Methods - AbsoluteOfSum method

  • روش ها - قسمت 3 - انواع پارامترها و نوع برگشتی. تایپ استاتیک در سی شارپ Methods - part 3 - parameters types and the return type. Static typing in C#

  • روش ها و تایپ کردن Methods and typing

  • تجزیه رشته به int (روش int.Parse) Parsing a string to an int (int.Parse method)

  • اولین استثنا The first exception

  • اضافه کردن یک پروژه جدید به یک راه حل Adding a new project to a solution

  • تکالیف - مقدمه Assignments - Introduction

  • تکلیف - ماشین حساب ساده - توضیحات و الزامات Assignment - Simple Calculator - Description and requirements

  • تکلیف - ماشین حساب ساده - وقت آن است که آن را پیاده سازی کنید Assignment - Simple Calculator - It's time for you to implement it

  • تکلیف - ماشین حساب ساده - راه حل Assignment - Simple Calculator - Solution

  • درون یابی رشته ای String interpolation

  • درونیابی رشته - FormatDate String interpolation - FormatDate

  • بیانیه سوئیچ Switch statement

  • بیانیه سوئیچ - DescribeDay Switch statement - DescribeDay

  • Char Char

  • نیاز به حلقه ها A need for loops

  • حلقه while - قسمت 1 While loop - part 1

  • عملگرهای += و ++ حلقه های بی نهایت += and ++ operators. Infinite loops

  • حلقه while - قسمت 2 While loop - part 2

  • حلقه while - CalculateSumOfNumbersBetween While loop - CalculateSumOfNumbersBetween

  • انجام ... در حالی که حلقه Do...while loop

  • حلقه Do-While - RepeatCharacter Do-while loop - RepeatCharacter

  • برای حلقه For loop

  • برای حلقه - فاکتوریل For loop - Factorial

  • زنگ تفريح Break

  • ادامه هید Continue

  • بشکن و ادامه بده Break and continue

  • حلقه های تو در تو Nested loops

  • عملکرد حلقه ها Loops performance

  • آرایه ها Arrays

  • آرایه ها Arrays

  • آرایه ها (1) - BuildHelloString Arrays (1) - BuildHelloString

  • آرایه ها (2) - IsWordPresentInCollection Arrays (2) - IsWordPresentInCollection

  • آرایه های چند بعدی Multi-dimensional arrays

  • آرایه های چند بعدی - FindMax Multi-dimensional arrays - FindMax

  • حلقه Foreach Foreach loop

  • حلقه Foreach - IsAnyWordLongerThan Foreach loop - IsAnyWordLongerThan

  • لیست ها Lists

  • لیست ها - GetOnlyUpperCaseWords Lists - GetOnlyUpperCaseWords

  • کلمه کلیدی "خارج". "out" keyword

  • روش TryParse TryParse method

  • تکلیف - لیست TODO - توضیحات و الزامات Assignment - TODO List - Description and requirements

  • تکلیف - لیست TODO - وقت آن است که برای حل آن تلاش کنید Assignment - TODO List - It's time for you to try to solve it

  • تکلیف - لیست TODO - پیاده سازی - گزینه های کاربر و اضافه کردن یک TODO Assignment - TODO List - Implementation - User options & adding a TODO

  • تکلیف - لیست TODO - پیاده سازی - فهرست کردن و حذف TODOها Assignment - TODO List - Implementation - Listing and Removing TODOs

  • تکلیف - لیست TODO - Refactoring Assignment - TODO List - Refactoring

  • مسابقه نهایی بخش Section final quiz

مبانی برنامه نویسی شی گرا Basics of Object-Oriented Programming

  • معرفی بخش Section introduction

  • مشکلات موجود در کد ما نیاز به برنامه نویسی شی گرا The issues in our code. A need for Object-Oriented Programming

  • مقدمه ای بر برنامه نویسی شی گرا Introduction to object-oriented programming

  • درک OOP با نوع DateTime Understanding OOP with the DateTime type

  • مبانی OOP Basics of OOP

  • انتزاع - مفهوم - برداشت Abstraction

  • اولین کلاس ما Our first class

  • پنهان کردن داده ها Data hiding

  • سازنده سفارشی Custom constructor

  • کلاس رزرو هتل HotelBooking class

  • محدودیت های C# در کدهای خارج از کلاس ها. بیانیه های سطح بالا C# restrictions on code outside classes. Top-level statements

  • اضافه کردن متدها به کلاس ها Adding methods to classes

  • مبانی کلاس ها Basics of classes

  • کپسوله سازی Encapsulation

  • کلاس مثلث The Triangle class

  • روش های اضافه بار Methods overloading

  • بارگذاری بیش از حد سازندگان فراخوانی یک سازنده از سازنده دیگر Constructors overloading. Calling one constructor from another

  • کپسوله سازی و اضافه بار Encapsulation & overloading

  • روش های بیانی Expression-bodied methods

  • کلمه کلیدی "this" (مرجع نمونه فعلی) "this" keyword (current instance reference)

  • پارامترهای اختیاری Optional parameters

  • کلاس سگ Dog class

  • اعتبارسنجی پارامترهای سازنده Validation of constructor parameters

  • Readonly و const Readonly and const

  • پارامترهای اختیاری و موارد دیگر Optional parameters and more

  • محدودیت رشته ها نیاز به خواص Limitations of fields. A need for properties

  • خواص Properties

  • ویژگی های کلاس Order Properties of the Order class

  • مقداردهی اولیه شی Object initializers

  • خواص محاسبه شده Computed properties

  • ویژگی های محاسبه شده - کلاس DailyAccountState Computed properties - DailyAccountState class

  • روش ها و کلاس های استاتیک Static methods and classes

  • کلاس های ایستا - NumberToDayOfWeek Translator Static classes - NumberToDayOfWeekTranslator

  • فیلدهای استاتیک، خواص و سازنده ها Static fields, properties and constructors

  • خواص و استاتیک Properties & static

  • string.Split و string.روش های Join string.Split and string.Join methods

  • اصل مسئولیت واحد - مقدمه Single Responsibility Principle - Introduction

  • اصل مسئولیت واحد - بازسازی مجدد (قسمت 1) Single Responsibility Principle - Refactoring (part 1)

  • اصل مسئولیت واحد - بازسازی مجدد (قسمت 2) Single Responsibility Principle - Refactoring (part 2)

  • اصل مسئولیت واحد - بازسازی مجدد (قسمت 3) Single Responsibility Principle - Refactoring (part 3)

  • اصل مسئولیت واحد Single Responsibility Principle

  • فایل ها، فضاهای نام و دستورالعمل استفاده Files, namespaces and the using directive

  • جهانی با استفاده از دستورالعمل ها Global using directives

  • تکلیف - بازی تاس پرتاب - توضیحات و الزامات Assignment - Dice Roll Game - Description and requirements

  • تکلیف - بازی تاس انداختن - وقت آن است که سعی کنید آن را حل کنید Assignment - Dice Roll Game - It's time for you to try to solve it

  • تکلیف - بازی تاس انداختن - تصادفی Assignment - Dice Roll Game - Random

  • تکلیف - بازی تاس انداختن - آنتی الگوی شماره جادویی Assignment - Dice Roll Game - Magic Number Antipattern

  • تکلیف - بازی تاس انداختن - کلاس های طراحی Assignment - Dice Roll Game - Designing classes

  • تکلیف - بازی تاس انداختن - Enums Assignment - Dice Roll Game - Enums

  • تکلیف - بازی تاس ریختن - عملگر شرطی سه تایی Assignment - Dice Roll Game - Ternary conditional operator

  • مسابقه نهایی بخش Section final quiz

برنامه نویسی شی گرا: چند شکلی، وراثت، رابط ها Object-Oriented Programming: Polymorphism, Inheritance, Interfaces

  • معرفی بخش Section introduction

  • نیاز به پلی مورفیسم A need for polymorphism

  • وراثت Inheritance

  • ارث بردن اعضا از کلاس پایه اصلاح کننده دسترسی محافظت شده Inheriting members from the base class. Protected access modifier

  • مبانی پلی مورفیسم Basics of polymorphism

  • حذف اعضای کلاس پایه. روش ها و ویژگی های مجازی Overriding members from the base class. Virtual methods and properties

  • روش های مجازی - تمرین Virtual methods - practice

  • ارث و غلبه - حیوانات Inheritance & Overriding - Animals

  • روش های مجازی - کلاس های StringsProcessor Virtual methods - StringsProcessor classes

  • سلسله مراتب ارثی عمیق تر A deeper inheritance hierarchy

  • ارث چندگانه Multiple inheritance

  • System.Object و روش ToString System.Object and the ToString method

  • روش ها و ویژگی های مجازی Virtual methods and properties

  • سازندگان ارث بری و کلمه کلیدی "پایه". Inheriting constructors and the "base" keyword

  • تبدیل ضمنی Implicit conversion

  • تبدیل صریح Explicit conversion

  • تبدیل Conversion

  • ارتقاء و پایین آوردن Upcasting and downcasting

  • عملگر "است". "is" operator

  • خالی Null

  • عملگر "is" و شی تهی - کلاس NumericTypesDescriber "is" operator and null object -NumericTypesDescriber class

  • اپراتور "به عنوان". "as" operator

  • کلاس های انتزاعی Abstract classes

  • روش های انتزاعی Abstract methods

  • روش های انتزاعی - اشکال Abstract methods - Shapes

  • نیاز به روش های انتزاعی A need for abstract methods

  • کلاس ها و روش های مهر و موم شده Sealed classes and methods

  • کلاس های استاتیک همیشه مهر و موم هستند Static classes are always sealed

  • چکیده و مهر و موم شده Abstract & sealed

  • روش های گسترش Extension methods

  • روش های پسوند - لیست پسوندها Extension methods - List extensions

  • نیاز به رابط ها A need for interfaces

  • رابط ها Interfaces

  • رابط ها - اعمال تبدیل های متعدد به یک عدد Interfaces - Applying multiple transformations to a number

  • رابط ها در مقابل کلاس های انتزاعی Interfaces vs abstract classes

  • رابط ها Interfaces

  • JSON JSON

  • تکلیف - کتاب آشپزی کوکی ها - توضیحات و الزامات Assignment - Cookies Cookbook - Description and requirements

  • تکلیف - کتاب آشپزی کوکی ها - وقت آن است که سعی کنید آن را حل کنید Assignment - Cookies Cookbook - It's time for you to try to solve it

  • تکلیف - کتاب آشپزی کوکی ها - طراحی سطح بالا Assignment - Cookies Cookbook - High-level design

  • تکلیف - کتاب آشپزی کوکی ها - وارونگی وابستگی و تزریق وابستگی Assignment - Cookies Cookbook - Dependency Inversion and Dependency Injection

  • تکلیف - کوکی ها کتاب آشپزی - طراحی انواع داده ها Assignment - Cookies Cookbook - Designing data types

  • تکلیف - کوکی ها کتاب آشپزی - چاپ شی داده. LINQ. Assignment - Cookies Cookbook - Printing data object. LINQ.

  • تکلیف - کتاب آشپزی کوکی ها - چاپ مواد تشکیل دهنده Assignment - Cookies Cookbook - Printing the ingredients

  • تکلیف - کتاب آشپزی کوکی ها - تهیه دستور پخت توسط کاربر Assignment - Cookies Cookbook - Composing the recipe by the user

  • تکلیف - کوکی ها کتاب آشپزی - خواندن و نوشتن از و به یک فایل *.txt Assignment - Cookies Cookbook - Reading and writing from and to a *.txt file

  • تکلیف - کتاب آشپزی کوکی ها - خواندن و نوشتن از و به یک فایل *.json Assignment - Cookies Cookbook - Reading and writing from and to a *.json file

  • تکلیف - کتاب آشپزی کوکی ها - الگوی طراحی روش الگو Assignment - Cookies Cookbook - Template Method Design Pattern

  • تکلیف - کتاب آشپزی کوکی ها - پاکسازی و سازماندهی پروژه Assignment - Cookies Cookbook - Cleanup and project organizing

  • مسابقه نهایی بخش Section final quiz

استثناها و رسیدگی به خطاها Exceptions and error handling

  • معرفی بخش Section introduction

  • شی استثنا Exception object

  • ردیابی پشته Stack trace

  • رسیدگی به استثنائات در نهایت تلاش کن Handling exceptions. Try-catch-finally

  • در نهایت تلاش کن. DivideNumbers Try-catch-finally. DivideNumbers

  • چند بلوک گرفتن Multiple catch blocks

  • مبانی استثنائات Basics of exceptions

  • استثناء انداختن به صراحت Throwing exceptions explicitly

  • انواع استثناهای داخلی Built-in exception types

  • استثناهای داخلی Built-in exceptions

  • StackOverflowException. روش های بازگشتی StackOverflowException. Recursive methods

  • استثناهای دقیق Precise exceptions

  • بازگرداندن استثناها "پرتاب" در مقابل "پرتاب سابق" Rethrowing exceptions. "throw" vs "throw ex"

  • بازگرداندن استثناها Rethrowing exceptions

  • بازگرداندن یک شی System.Exception Rethrowing a System.Exception object

  • بلوک جهانی تلاش برای گرفتن Global try-catch block

  • کد داخل بلوک catch Code inside the catch block

  • فیلترهای استثنایی Exception filters

  • رسیدگی به استثنا Exception handling

  • استثناهای سفارشی Custom exceptions

  • چه زمانی باید استثناهای سفارشی را تعریف کرد When to define custom exceptions

  • استثنا سفارشی - InvalidTransactionException Custom exception - InvalidTransactionException

  • استثناها به عنوان بخشی پنهان از امضای متد Exceptions as a hidden part of a method signature

  • دو مکتب افراطی استفاده از استثناها Two extreme schools of using exceptions

  • استفاده هوشمندانه از استثناها - پرتاب Smart usage of exceptions - throw

  • استفاده هوشمندانه از استثناها - گرفتن Smart usage of exceptions - catch

  • استفاده هوشمندانه از استثناها Smart usage of exceptions

  • تکلیف - تجزیه کننده داده های بازی - توضیحات و الزامات Assignment - Game Data Parser - Description and requirements

  • تکلیف - تجزیه کننده داده های بازی - وقت آن است که سعی کنید آن را حل کنید Assignment - Game Data Parser - It's time for you to try to solve it

  • تکلیف - تجزیه کننده داده های بازی - سناریوی روز آفتابی Assignment - Game Data Parser - Sunny day scenario

  • تخصیص - تجزیه کننده داده های بازی - جریان کنترل شده توسط استثناها Assignment - Game Data Parser - Flow controlled by exceptions

  • تکلیف - تجزیه کننده داده های بازی - اضافه کردن جزئیات به JsonException Assignment - Game Data Parser - Adding details to JsonException

  • تکلیف - تجزیه کننده داده های بازی - ثبت سفارشی Assignment - Game Data Parser - Custom logger

  • تخصیص - تجزیه کننده داده های بازی - کاهش استفاده از استثنا Assignment - Game Data Parser - Reducing usage of exception

  • تکلیف - تجزیه کننده داده های بازی - Refactoring - روش های استخراج Assignment - Game Data Parser - Refactoring - Extracting methods

  • تخصیص - تجزیه کننده داده های بازی - Refactoring - SRP، DI و جداسازی کلاس ها Assignment - Game Data Parser - Refactoring - SRP, DI and classes decoupling

  • مسابقه نهایی بخش Section final quiz

انواع عمومی و استفاده پیشرفته از روش ها Generic types & advanced use of methods

  • معرفی بخش Section introduction

  • مقدمه ای بر انواع ژنریک Introduction to generic types

  • درک نحوه عملکرد لیست در زیر کاپوت Understanding how List works under the hood

  • فهرست ساده شده (افزودن مورد جدید) Simplified List (adding a new item)

  • فهرست ساده شده (حذف یک مورد در فهرست داده شده) Simplified List (deleting an item at given index)

  • نیاز به انواع ژنریک اجرای یک نوع ژنریک A need for generic types. Implementing a generic type

  • انواع عمومی - کلاس جفت Generic types - Pair class

  • نیاز به تاپل A need for tuples

  • تاپل ها Tuples

  • معرفی انواع عمومی Generic types introduction

  • سی شارپ بدون ژنریک. ArrayList C# without generics. ArrayList

  • روش های عمومی Generic methods

  • روش های عمومی با پارامترهای نوع چندگانه Generic methods with multiple type parameters

  • روش های عمومی - روش SwapTupleItems Generic methods - SwapTupleItems method

  • روش Convert.ChangeType. کلمه کلیدی "typeof" و شی Type Convert.ChangeType method. "typeof" keyword and the Type object

  • انواع و روش های عمومی Generic types and methods

  • نیاز به محدودیت های نوع A need for type constraints

  • بهبود عملکرد لیست اندازه گیری زمان اجرای کد Improving the performance of the List. Measuring the time of the code execution

  • محدودیت های نوع - محدودیت در نوع پایه Type constraints - the constraint on the base type

  • IComparable رابط. سفارش اشیاء IComparable interface. Ordering objects

  • محدودیت های نوع - محدودیت در رابط پیاده سازی شده Type constraints - the constraint on the implemented interface

  • محدودیت‌های نوع و IComparable - فهرست مرتب‌شده از نام‌های کامل Type constraints & IComparable - SortedList of FullNames

  • محدودیت های نوع - انواع عددی. ریاضی عمومی Type constraints - numeric types. Generic math

  • محدودیت های نوع - خلاصه. محدودیت های چندگانه Type constraints - summary. Multiple type constraints

  • محدودیت های نوع Type constraints

  • استفاده پیشرفته از روش ها - مقدمه Advanced use of methods - introduction

  • توابع و اقدامات Funcs and Actions

  • مبانی Funcs و Actions Basics of Funcs and Actions

  • عبارات لامبدا Lambda expressions

  • مبانی عبارات لامبدا Basics of lambda expressions

  • نمایندگان Delegates

  • Funcs، عبارات لامبدا و نمایندگان Funcs, lambda expressions and delegates

  • فرهنگ لغت - مقدمه Dictionary - introduction

  • فرهنگ لغت - تمرین Dictionary - practice

  • فرهنگ لغت - FindMaxWeights از حیوانات خانگی Dictionaries - FindMaxWeights of pets

  • نیاز به الگوی طراحی استراتژی A need for the Strategy design pattern

  • بازسازی کد با استفاده از عبارات Funcs و lambda Refactoring the code using Funcs and lambda expressions

  • اصل باز-بسته. الگوی طراحی استراتژی Open-Closed Principle. Strategy design pattern

  • فیلتر عمومی مجموعه ها Generic filtering of collections

  • استفاده پیشرفته از انواع ژنریک Advanced use of generic types

  • ذخیره سازی Caching

  • تخصیص - حافظه پنهان سفارشی - توضیحات و الزامات Assignment - Custom Cache - Description and requirements

  • تکلیف - کش سفارشی - وقت آن است که سعی کنید آن را حل کنید Assignment - Custom Cache - It's time for you to try to solve it

  • تخصیص - کش سفارشی - پیاده سازی Assignment - Custom Cache - Implementation

  • تکلیف - کش سفارشی - الگوی طراحی دکوراتور Assignment - Custom Cache - The Decorator design pattern

  • تکلیف - کش سفارشی - ترکیب بسیاری از دکوراتورها با هم Assignment - Custom Cache - Composing many Decorators together

  • مسابقه نهایی بخش Section final quiz

LINQ LINQ

  • معرفی بخش Section introduction

  • LINQ چیست؟ What is LINQ?

  • روش های LINQ و افزونه LINQ and extension methods

  • LINQ، IEnumerable<T> و روش زنجیره ای LINQ, IEnumerable<T> and method chaining

  • اجرای معوق Deferred execution

  • مبانی LINQ Basics of LINQ

  • هر Any

  • همه All

  • هر و همه Any & All

  • شمردن Count

  • حاوی Contains

  • تعداد و شامل Count & Contains

  • سفارش توسط OrderBy

  • اولین و آخرین First and Last

  • OrderBy، اول و آخر OrderBy, First & Last

  • جایی که Where

  • متمایز Distinct

  • کجا و متمایز Where & Distinct

  • انتخاب کنید Select

  • میانگین. انواع ناشناس Average. Anonymous types

  • انتخاب و میانگین Select & Average

  • انتساب - Refactoring به LINQ - توضیحات و الزامات Assignment - Refactoring to LINQ - Description and requirements

  • تکلیف - LINQ Refactoring - وقت آن است که سعی کنید آن را حل کنید Assignment - LINQ Refactoring - It's time for you to try to solve it

  • تخصیص - Refactoring به LINQ - حلقه تودرتو و خوانایی کد Assignment - Refactoring to LINQ - Nested loop and code readability

  • انتساب - Refactoring به LINQ - پنجره Find and Replace Assignment - Refactoring to LINQ - Find and Replace window

  • تخصیص - تغییر شکل به LINQ - حلقه‌های کمتر و قالب‌بندی رشته‌های چندخطی Assignment - Refactoring to LINQ - Fewer loops & multiline strings formatting

  • تخصیص - Refactoring به LINQ - بررسی اینکه آیا مجموعه تکراری است یا خیر Assignment - Refactoring to LINQ - Checking if collection has duplicates

  • مسابقه نهایی بخش Section final quiz

  • اگر می خواهید درباره LINQ بیشتر بدانید... If you want to learn more about LINQ...

دات نت زیر کاپوت .NET under the hood

  • معرفی بخش Section introduction

  • دات نت و سی شارپ .NET and C#

  • زبان متوسط ​​معمولی (CIL) Common Intermediate Language (CIL)

  • زمان اجرا زبان رایج (CLR) Common Language Runtime (CLR)

  • مبانی دات نت .NET basics

  • حافظه یک برنامه پشته و پشته Memory of a program. The stack and the heap

  • معناشناسی ارزش در مقابل معناشناسی مرجع Value semantics vs reference semantics

  • انواع ارزش در مقابل انواع مرجع Value types vs reference types

  • حافظه یک برنامه ارزش در مقابل انواع مرجع Memory of a program. Value vs reference types

  • انواع ارزش در مقابل انواع مرجع - نکات کاربردی Value types vs reference types - practical tips

  • کلمه کلیدی "ref". "ref" keyword

  • اصلاح کننده "ref" - FastForwardToSummer "ref" modifier - FastForwardToSummer

  • استفاده از "ref" با انواع مرجع Using "ref" with reference types

  • سیستم نوع یکپارچه نیاز به بوکس و جعبه گشایی Unified type system. A need for boxing and unboxing

  • بوکس و جعبه گشایی Boxing and unboxing

  • بوکس و جعبه گشایی - هزینه عملکرد Boxing and unboxing - performance cost

  • بوکس و جعبه گشایی Boxing and unboxing

  • زباله جمع کن - مقدمه Garbage Collector - introduction

  • زباله جمع آوری - تکه تکه شدن حافظه و یکپارچه سازی Garbage Collector - memory fragmentation and defragmentation

  • جمع آوری زباله - الگوریتم علامت گذاری و جارو کردن Garbage Collector - the Mark-and-Sweep algorithm

  • اصول جمع آوری زباله و مدیریت حافظه Basics of Garbage Collector and memory management

  • جمع آوری زباله - نسل هایی از اشیاء Garbage Collector - generations of objects

  • نشت های حافظه Memory leaks

  • نهایی کننده ها Finalizers

  • جمع آوری زباله و مدیریت حافظه - پیشرفته Garbage Collector and memory management - advanced

  • روش دفع - مقدمه Dispose method - introduction

  • روش دور ریختن - نوشتن روی یک فایل با استفاده از StreamWriter Dispose method - writing to a file using StreamWriter

  • روش دور ریختن - خواندن از یک فایل با استفاده از StreamReader Dispose method - reading from a file using StreamReader

  • روش دفع - اجرا Dispose method - implementation

  • روش دور ریختن - AllLinesFromTextFileReader Dispose method - AllLinesFromTextFileReader

  • فایل های CSV CSV files

  • خواندن فایل های CSV Reading CSV files

  • تکلیف - بهبودهای پردازش CSV - توضیحات و الزامات Assignment - CSV Processing Improvements - Description and requirements

  • تکلیف - بهبودهای پردازش CSV - وقت آن است که سعی کنید آن را حل کنید Assignment - CSV Processing Improvements - It's time for you to try to solve it

  • تکلیف - بهبودهای پردازش CSV - تجزیه و تحلیل کد و نکات Assignment - CSV Processing Improvements - Code analysis & tips

  • تکلیف - بهبود پردازش CSV - کاهش اندازه دیکشنری ها Assignment - CSV Processing Improvements - Reducing the size of Dictionaries

  • تکلیف - بهبود پردازش CSV - کاهش تعداد بوکس ها Assignment - CSV Processing Improvements - Reducing the number of boxings

  • تکلیف - بهبودهای پردازش CSV - تجزیه و تحلیل Assignment - CSV Processing Improvements - Analysis

  • مسابقه نهایی بخش Section final quiz

انواع پیشرفته سی شارپ Advanced C# types

  • معرفی بخش Section introduction

  • انعکاس Reflection

  • ویژگی های Attributes

  • ویژگی ها - MustBeLargerThanAttribute Attributes - MustBeLargerThanAttribute

  • محدودیت های انواع پارامترهای ویژگی ها Limitations of attributes parameters types

  • انعکاس Reflection

  • سازه ها Structs

  • ساختارها در مقابل کلاس ها - تفاوت های اساسی Structs vs Classes - crucial differences

  • ساختارها در مقابل کلاس ها - تفاوت های سطح پایین Structs vs Classes - low-level differences

  • انتخاب بین ساختارها و کلاس ها Choosing between structs and classes

  • سازه ها Structs

  • چرا باید ساختارها را تغییرناپذیر کنیم؟ Why should we make structs immutable?

  • ساختار تغییرناپذیر - زمان Immutable struct - Time

  • جهش غیر مخرب Non-destructive mutation

  • بیان "با" "with" expression

  • ساختارهای فقط خواندنی Readonly structs

  • انواع تغییرناپذیر Immutable types

  • نگاهی دقیق به نوع System.Object. روش ReferenceEquals A close look at the System.Object type. The ReferenceEquals method

  • روش برابر است Equals method

  • نادیده گرفتن متد Equals در کلاس ها Overriding the Equals method in classes

  • نادیده گرفتن متد Equals در ساختارها Overriding the Equals method in structs

  • برابر است - نادیده گرفتن آن در کلاس FullName Equals - overriding it in the FullName class

  • رابط IEquatable<T> IEquatable<T> interface

  • == اپراتور == operator

  • بررسی های برابری Equality checks

  • بارگذاری بیش از حد اپراتورها Operators overloading

  • بارگذاری بیش از حد اپراتورهای تبدیل ضمنی و صریح Overloading of implicit and explicit conversion operators

  • بارگذاری بیش از حد اپراتورها - ساختارهای زمانی Operators overloading - Time structs

  • توابع هش Hash functions

  • پیاده سازی پیش فرض متد GetHashCode Default implementation of the GetHashCode method

  • چه زمانی باید متد GetHashCode را لغو کرد When to override the GetHashCode method

  • GetHashCode GetHashCode

  • نادیده گرفتن متد GetHashCode Overriding the GetHashCode method

  • GetHashCode - ساختار زمان GetHashCode - Time struct

  • ValueTuples ValueTuples

  • مزایای انواع تغییرناپذیر Benefits of immutable types

  • انواع تغییرناپذیر Immutable types

  • سوابق Records

  • ضبط سازه ها Record structs

  • سوابق - GpsCoordinates Records - GpsCoordinates

  • انواع مقادیر باطل Nullable value types

  • انواع مرجع باطل Nullable reference types

  • اپراتور نابخشودنی Null-forgiving operator

  • استفاده از انواع مرجع باطل محدودیت‌های نوع عمومی مربوط به پوچ‌پذیری Using nullable reference types. Generic type constraints related to nullability

  • انواع باطل شدنی Nullable types

  • API ها APIs

  • پرس و جو از یک API با استفاده از C# Querying an API using C#

  • کلاسی برای جستجو در APIها A class for querying APIs

  • تکلیف - آمار سیارات جنگ ستارگان - توضیحات و الزامات Assignment - Star Wars Planets Stats - Description and requirements

  • تکلیف - آمار سیارات جنگ ستارگان - وقت آن است که سعی کنید آن را حل کنید Assignment - Star Wars Planets Stats - It's time for you to try to solve it

  • تکلیف - آمار سیارات جنگ ستارگان - JsonPropertyNameAttribute و DTOs Assignment - Star Wars Planets Stats - JsonPropertyNameAttribute and DTOs

  • تکلیف - آمار سیارات جنگ ستارگان - رسیدگی به استثناها Assignment - Star Wars Planets Stats - Exceptions handling

  • تکلیف - آمار سیارات جنگ ستارگان - طراحی نوع Assignment - Star Wars Planets Stats - Type design

  • تکلیف - آمار سیارات جنگ ستارگان - تبدیل DTO به نوع سفارشی Assignment - Star Wars Planets Stats - Converting DTO to a custom type

  • تکلیف - آمار سیارات جنگ ستارگان - تکمیل برنامه و روش MaxBy Assignment - Star Wars Planets Stats - Finishing the app and the MaxBy method

  • تکلیف - آمار سیارات جنگ ستارگان - Refactoring Assignment - Star Wars Planets Stats - Refactoring

  • تکلیف - آمار سیارات جنگ ستارگان - تقسیم کلاس Assignment - Star Wars Planets Stats - Splitting the class

  • تکلیف - آمار سیارات جنگ ستارگان - چاپگر جدول جهانی Assignment - Star Wars Planets Stats - Universal table printer

  • مسابقه نهایی بخش Section final quiz

مجموعه ها Collections

  • معرفی بخش Section introduction

  • نقش رابط IEnumerable The role of the IEnumerable interface

  • نگاهی دقیق به رابط IEnumerable A close look at the IEnumerable interface

  • پیاده سازی IEnumerable Implementing IEnumerable

  • پیاده سازی رابط ضمنی و صریح Implicit and explicit interface implementation

  • پیاده سازی IEnumerable<T> Implementing IEnumerable<T>

  • پیاده سازی IEnumerable و رابط ها IEnumerable & interfaces implementation

  • نمایه سازها Indexers

  • ValueTuples و نمایه ساز سفارشی - PairOfArrays ValueTuples & Custom indexer - PairOfArrays

  • مقداردهی اولیه مجموعه Collection initializers

  • رابط های ICollection و IList ICollection and IList interfaces

  • شکستن اصل جداسازی رابط Breaking the Interface Segregation Principle

  • اصل جداسازی رابط Interface Segregation Principle

  • مزایای مجموعه های فقط خواندنی The benefits of readonly collections

  • مجموعه های فقط خواندنی ReadOnlyCollection و ReadOnlyDictionary Readonly collections. ReadOnlyCollection and ReadOnlyDictionary

  • مجموعه ها - موضوعات پیشرفته Collections - advanced topics

  • نماد O بزرگ Big O Notation

  • الگوریتم جستجوی باینری Binary search algorithm

  • الگوریتم جستجوی باینری - پیاده سازی Binary search algorithm - implementation

  • الگوریتم جستجوی باینری - پیچیدگی Binary search algorithm - complexity

  • پیچیدگی الگوریتم ها Complexity of algorithms

  • بهبود عملکرد هنگام استفاده از لیست ها Improving performance when using Lists

  • لیست پیوندی Linked list

  • لیست پیوندی در مقابل فهرست Linked list vs List

  • دیکشنری های زیر کاپوت Dictionaries under the hood

  • عملکرد فرهنگ لغت Performance of Dictionaries

  • عملکرد مجموعه ها Performance of collections

  • HashSet HashSet

  • HashSet - متد CreateUnion HashSet - CreateUnion method

  • صف Queue

  • پشته Stack

  • کلمه کلیدی "params". "params" keyword

  • کلمه کلیدی "params" - آیا Stack حاوی هر یک از کلمات داده شده است؟ "params" keyword - Does Stack contain any of the given words?

  • نیاز به بیانیه عملکرد A need for yield statement

  • بیانیه عملکرد - تجزیه و تحلیل رفتار yield statement - behavior analysis

  • بیانیه بازده و تکرار کننده ها yield statement and iterators

  • بیانیه بازده - تمرین. بیانیه شکست بازده yield statement - practice. yield break statement

  • بیانیه بازده - روش GetAllAfterLastNullReversed yield statement - GetAllAfterLastNullReversed method

  • پیاده سازی رابط IEnumerable با استفاده از تکرار کننده ها Implementing IEnumerable interface using iterators

  • تکلیف - فهرست پیوندی سفارشی - توضیحات و الزامات Assignment - Custom Linked List - Description and requirements

  • تکلیف - فهرست پیوندی سفارشی - وقت آن است که سعی کنید آن را حل کنید Assignment - Custom Linked List - It's time for you to try to solve it

  • تکلیف - فهرست پیوندی سفارشی - ساختارهای داده Assignment - Custom Linked List - Data structures

  • تخصیص - فهرست پیوندی سفارشی - روش AddToFront Assignment - Custom Linked List - The AddToFront method

  • تکلیف - لیست پیوندی سفارشی - پیاده سازی IEnumerable Assignment - Custom Linked List - Implementing IEnumerable

  • تکلیف - فهرست پیوندی سفارشی - افزودن موارد جدید در انتهای لیست Assignment - Custom Linked List - Adding new items at the end of the list

  • تکلیف - فهرست پیوندی سفارشی - روش پاک کردن Assignment - Custom Linked List - The Clear method

  • تکلیف - فهرست پیوندی سفارشی - حذف موارد و روش Contains Assignment - Custom Linked List - Removing items and the Contains method

  • تکلیف - فهرست پیوندی سفارشی - روش CopyTo Assignment - Custom Linked List - The CopyTo method

  • تکلیف - فهرست پیوندی سفارشی - خلاصه و عملکرد. کلاس های خصوصی Assignment - Custom Linked List - Summary and performance. Private classes

  • مسابقه نهایی بخش Section final quiz

پروژه ها، مجموعه ها، راه حل ها Projects, assemblies, solutions

  • معرفی بخش Section introduction

  • پروژه ها و راهکارها Projects and solutions

  • ویژگی های پروژه Project properties

  • اشکال زدایی ساخت در مقابل نسخه انتشار Debug build vs Release build

  • پروژه ها و راهکارها Projects and solutions

  • مجامع Assemblies

  • ارجاع انواع از مجموعه دیگر Referencing types from another assembly

  • ارجاع انواع از پروژه دیگر Referencing types from another project

  • اصلاح کننده دسترسی داخلی اصول استفاده از اصلاح کننده های دسترسی Internal access modifier. Principles of using access modifiers

  • اصلاح کننده دسترسی داخلی محافظت شده Protected internal access modifier

  • اصلاح کننده دسترسی محافظت شده خصوصی Private protected access modifier

  • اصلاح کننده های دسترسی - خلاصه Access modifiers - summary

  • اصلاح کننده های دسترسی Access modifiers

  • نحوه ساختار کد در یک راه حل How to structure the code in a solution

  • NuGet NuGet

  • * فایل های csproj *.csproj files

  • فایل های *.sln *.sln files

  • به روز رسانی نسخه دات نت Updating the .NET version

  • مسابقه نهایی بخش Section final quiz

رشته های Strings

  • معرفی بخش Section introduction

  • Char Char

  • نمایش کاراکتر در حافظه رمزگذاری کاراکتر Char representation in memory. Character encoding

  • مدیریت کدگذاری های مختلف Managing various encodings

  • کاراکترها و رمزگذاری Chars and encoding

  • تغییرناپذیری رشته ها Immutability of strings

  • رشته ها - مقدار یا انواع مرجع؟ Strings - value or reference types?

  • رشته ها به عنوان اعضا در ساختارها Strings as members in structs

  • رشته های Strings

  • نیاز به StringBuilder A need for StringBuilder

  • StringBuilder StringBuilder

  • StringBuilder - روش معکوس StringBuilder - The Reverse method

  • اینترنینگ رشته String interning

  • الگوی طراحی Flyweight Flyweight design pattern

  • قالب بندی رشته پیشرفته Advanced string formatting

  • قالب بندی رشته خاص فرهنگ Culture-specific string formatting

  • فرهنگ خاص در مقابل فرهنگ ثابت Specific culture vs Invariant culture

  • ویژگی های پیشرفته strigs Advanced features of strigs

  • تکلیف - جمع آوری داده های بلیط - توضیحات و الزامات Assignment - Tickets Data Aggregator - Description and requirements

  • تکلیف - جمع‌آوری داده‌های بلیط - وقت آن است که سعی کنید آن را حل کنید Assignment - Tickets Data Aggregator - It's time for you to try to solve it

  • تکلیف - جمع آوری داده های بلیط - خواندن متن از PDF Assignment - Tickets Data Aggregator - Reading text from PDF

  • تکلیف - Tickets Data Aggregator - لیست تمام فایل های PDF از یک پوشه Assignment - Tickets Data Aggregator - List all PDFs from a folder

  • تخصیص - جمع‌آوری داده‌های بلیط - تقسیم یک رشته توسط چندین جداکننده Assignment - Tickets Data Aggregator - Splitting a string by multiple separators

  • تکلیف - جمع‌آوری داده‌های بلیط - تجزیه رشته‌های فرهنگ خاص Assignment - Tickets Data Aggregator - Parsing culture-specific strings

  • تکلیف - Tickets Data Aggregator - ذخیره نتیجه در یک فایل متنی Assignment - Tickets Data Aggregator - Saving result in a text file

  • تکلیف - جمع‌آوری داده‌های بلیت - Refactoring Assignment - Tickets Data Aggregator - Refactoring

  • تخصیص - جمع آوری داده های بلیط - مطابقت با SRP Assignment - Tickets Data Aggregator - Compliance with the SRP

  • مسابقه نهایی بخش Section final quiz

انواع عددی Numeric types

  • معرفی بخش Section introduction

  • سیستم اعداد اعشاری Decimal number system

  • سیستم اعداد باینری Binary number system

  • حداکثر اعداد در تعداد معینی از ارقام Maximal numbers on a given number of digits

  • سیستم اعداد باینری Binary number system

  • اعداد در حافظه عدد صحیح Numbers in memory. Integer

  • اضافه کردن اعداد باینری Adding binary numbers

  • سرریز عددی و خرابی های بی صدا Numeric overflow & silent failures

  • اعداد در حافظه Numbers in memory

  • کلمه کلیدی "بررسی" "checked" keyword

  • زمینه بررسی شده - چه زمانی از آن استفاده کنیم؟ Checked context - when to use it?

  • محدوده زمینه بررسی شده کلمه کلیدی "بررسی نشده". Scope of the checked context. "unechecked" keyword

  • بررسی شد - دنباله فیبوناچی Checked - Fibonacci sequence

  • نمای کلی انواع عددی انتگرال Integral numeric types overview

  • اعداد اعشاری Floating-point numbers

  • دوبل و شناور double and float

  • استفاده هوشمندانه از اعداد ممیز شناور باینری Smart usage of binary floating point numbers

  • اعداد ممیز شناور - روش IsAverageEqualTo Floating point numbers - The IsAverageEqualTo method

  • اعشاری Decimal

  • مسابقه نهایی بخش Section final quiz

مناسبت ها Events

  • معرفی بخش Section introduction

  • نیاز به ارتباط بین اشیاء A need for communication between objects

  • نیاز به الگوی طراحی Observer A need for the Observer design pattern

  • الگوی طراحی ناظر Observer design pattern

  • تعریف یک رویداد و اشتراک در آن Defining an event and subsribing to it

  • بالا بردن رویدادها Raising events

  • رویدادها - کاربر و حساب بانکی Events - User and BankAccount

  • EventHandler delegate & EventArgs نوع EventHandler delegate & EventArgs type

  • الگوی طراحی ناظر و اصول اولیه رویدادها Observer design pattern & basics of events

  • رویداد در مقابل اعضای نماینده Event vs delegate members

  • نشت حافظه ناشی از رویدادها Memory leaks caused by events

  • رویدادها - WeatherDataAggregator Events - WeatherDataAggregator

  • فرم های ویندوز - مقدمه Windows Forms - introduction

  • اولین برنامه Windows Forms The first Windows Forms app

  • آشنایی با فایل های Windows Forms Understanding Windows Forms files

  • رویدادها در فرم های ویندوز Events in Windows Forms

  • فرم های ویندوز - عناصر اصلی UI Windows Forms - basic UI elements

  • تکلیف - پیشنهاد انواع عددی - شرح و الزامات Assignment - Numeric Types Suggester - Description and requirements

  • تکلیف - پیشنهاد انواع عددی - وقت آن است که برای حل آن تلاش کنید Assignment - Numeric Types Suggester - It's time for you to try to solve it

  • تکلیف - پیشنهاد انواع عددی - رابط کاربری و رویدادهای اساسی Assignment - Numeric Types Suggester - User Interface & basic events

  • تکلیف - پیشنهاد انواع عددی - مدیریت رویداد KeyPress Assignment - Numeric Types Suggester - Handling KeyPress event

  • تکلیف - پیشنهاد انواع عددی - اعتبارسنجی اعداد و نوع BigInteger Assignment - Numeric Types Suggester - Numbers validation and BigInteger type

  • تکلیف - انواع عددی پیشنهاد - انتخاب نوع عددی Assignment - Numeric Types Suggester - Choosing numeric type

  • مسابقه نهایی بخش Section final quiz

تست واحد Unit Testing

  • معرفی بخش Section introduction

  • تست های دستی در مقابل تست های خودکار Manual tests vs Automated tests

  • راه اندازی محیط تست Setting up the testing environment

  • تست های واحد اول First unit tests

  • اصول تست واحد Unit testing fundamentals

  • اجرای تست ها Running the tests

  • تست های نامگذاری واحد Naming unit tests

  • پیام های آزمایشی Test messages

  • الگوی AAA AAA pattern

  • تست های ارزشمند Valuable tests

  • TestCase TestCase

  • نام گذاری تست های پارامتری شده Naming parameterized tests

  • TestCaseSource TestCaseSource

  • موارد آزمون Test cases

  • اظهارات در مورد استثناها ادعاهای متعدد در آزمون واحد Assertions on exceptions. Multiple assertions in single test

  • ارزش آزمون های واحد Value of unit tests

  • ادعاهای اساسی Basic assertions

  • ادعاها Assertions

  • تست روش های خصوصی Testing private methods

  • تست روش های داخلی Testing internal methods

  • مزایای تست واحد - بدون ترس از refactoring Benefits of unit tests - no fear of refactoring

  • مزایای تست واحد - طراحی بهتر Benefits of unit tests - better design

  • مزایای تست های واحد - تشخیص زودهنگام اشکال Benefits of unit tests - early bug detection

  • معایب تست های واحد Downsides of unit tests

  • مزایا و معایب تست های واحد Upsides and downsides of unit tests

  • تکلیف - تست های مولد فیبوناچی - توضیحات و الزامات Assignment - Fibonacci generator tests - Description and requirements

  • تکلیف - تست های مولد فیبوناچی - حل Assignment - Fibonacci generator tests - solution

  • کلاس های تست بسته به کلاس های دیگر Testing classes depending on other classes

  • نیاز به تمسخر A need for mocks

  • مسخره می کند Mocks

  • کنترل رفتار ساختگی Controlling the mock behavior

  • اصول مسخره کردن Basics of mocks

  • مزایای استفاده از ماک The benefits of using mocks

  • راه اندازی ساختگی پیشرفته Advanced mock setup

  • اظهارات در حال بررسی اینکه آیا یک روش فراخوانی شده است Assertions checking if a method was called

  • ادعاهای پیشرفته در فراخوانی روش Advanced assertions on method calls

  • استفاده از تمسخر Usage of mocks

  • کد پاک در تست های واحد Clean code in unit tests

  • تنظیم متداول برای آزمایش Common setup for tests

  • تست ها، وارونگی وابستگی و تزریق وابستگی Tests, Dependency Inversion and Dependency Injection

  • کد غیر قابل آزمایش - بدون وارونگی وابستگی Untestable code - no Dependency Inversion

  • کد غیرقابل آزمایش - روش های استاتیک Untestable code - static methods

  • واحد کیفیت و قابلیت تست کد را تست می کند Unit tests quality and code testability

  • انواع دیگر تست های نرم افزاری Other kinds of software tests

  • انواع مختلف تست Different types of tests

  • تکلیف - تست های واحد برای GuessingGame - توضیحات و الزامات Assignment - Unit tests for GuessingGame - Description and requirements

  • تکلیف - تست های واحد برای GuessingGame - سناریوهای اساسی Assignment - Unit tests for GuessingGame - Basic scenarios

  • تکلیف - تست های واحد برای GuessingGame - تأیید پیام ها Assignment - Unit tests for GuessingGame - Verifying messages

  • تکلیف - تست های واحد برای GuessingGame - رویکردهایی برای اعتبارسنجی پیام ها Assignment - Unit tests for GuessingGame - Approaches for messages validation

  • تکلیف - تست های واحد برای GuessingGame - فایل های منبع Assignment - Unit tests for GuessingGame - Resource files

  • مسابقه نهایی بخش Section final quiz

کد پاک Clean Code

  • معرفی بخش Section introduction

  • اهمیت کد پاک The importance of clean code

  • تصمیمات بد مربوط به کیفیت کد Bad decisions related to code quality

  • بدهی های فنی Tech debt

  • حرفه ای بودن Being professional

  • کد پاک چیست؟ What is clean code?

  • اهمیت کد پاک The importance of clean code

  • اهمیت نام های معنی دار The importance of meaningful names

  • تغییر نام. قانون پیشاهنگی پسر Renaming. The Boy Scout Rule

  • مقابله با نامگذاری مشکل ساز Dealing with problematic naming

  • نام گذاری اصول Naming fundamentals

  • نام های رسا Expressive names

  • نام های بلند و کوتاه Long and short names

  • Clean Code - Coding Exercis مقدمه Clean Code - Coding Exercises introduction

  • Refactoring نامگذاری - روش معکوس Naming refactoring - Reverse method

  • اصل کمترین غافلگیری Principle of the least surprise

  • نامگذاری خوب Good naming

  • نام های بد - کلمات بی معنی Bad names - meaningless words

  • نام های بد - نام های بیش از حد خاص Bad names - overspecific names

  • نام های بد - نماد مجارستانی Bad names - Hungarian notation

  • نام های بد - نام های گیج کننده Bad names - confusing names

  • نام های بد - مخفف ها Bad names - abbreviations

  • نام های بد Bad names

  • اختصارات معقول نام های متعارف Reasonable abbreviations. Conventional names

  • متن نوشته Context

  • Refactoring نامگذاری - ساخت مسیر فایل بر اساس DateTime Naming refactoring - Building file path based on DateTime

  • Refactoring مطالعه موردی - نامگذاری Refactoring case study - naming

  • امضای خوب روش ها Good signatures of methods

  • تعداد پارامترها Number of parameters

  • پارامترهای کمتر - تقسیم روش Fewer parameters - splitting the method

  • پارامترهای کمتر - بسته بندی پارامترهای مرتبط Fewer parameters - bundling related parameters

  • پارامترهای کمتر - اجتناب از پارامترهای بولی Fewer parameters - avoiding boolean parameters

  • امضاها Signatures

  • روش های کوچک Small methods

  • بازسازی روش - روش ChooseBetterPath Method refactoring - ChooseBetterPath method

  • یک روش، یک کار One method, one job

  • یک روش، یک کار - بازسازی One method, one job - refactoring

  • سطوح انتزاع Levels of abstraction

  • آهنگسازی سطوح مختلف انتزاع Composing different levels of abstraction

  • سطوح انتزاع در روش ها Levels of abstraction within methods

  • مواد و روش ها Methods

  • Refactoring مطالعه موردی - روشها - مقدمه Refactoring case study - methods - introduction

  • Refactoring مطالعه موردی - روشها - امضا Refactoring case study - methods - signature

  • Refactoring مطالعه موردی - روشها - بدن Refactoring case study - methods - body

  • نظرات Comments

  • Refactoring روش - روش IsNameValid Method refactoring - IsNameValid method

  • بدترین نظرات The worst comments

  • نظرات منطقی The reasonable comments

  • نظرات Comments

  • چه زمانی روش ها را ثابت کنیم؟ روش های خصوصی When to make methods static? Private methods

  • خطر ایستا کردن روش های عمومی The risk of making public methods static

  • چه زمانی روش ها را ثابت کنیم؟ روش های عمومی When to make methods static? Public methods

  • مسائل روشهای استاتیک The issues of static methods

  • ترکیب بر ارث Composition over inheritance

  • مسائل ارث The issues of inheritance

  • جایگزینی وراثت با ترکیب Replacing inheritance with composition

  • مزایای ترکیب The benefits of composition

  • ترکیب بر ارث Composition over inheritance

  • تکلیف - Refactoring ژنراتور رمز عبور - توضیحات و الزامات Assignment - Password Generator Refactoring - Description and requirements

  • تخصیص - Refactoring ژنراتور رمز عبور - توضیح کد موجود Assignment - Password Generator Refactoring - Explaining the existing code

  • تکلیف - Refactoring ژنراتور رمز عبور - رفع نامگذاری Assignment - Password Generator Refactoring - Fixing naming

  • تخصیص - بازسازی رمز عبور - بهبود طراحی Assignment - Password Generator Refactoring - Improving design

  • مسابقه نهایی بخش Section final quiz

[به زودی] برنامه نویسی چند رشته ای و ناهمزمان [COMING SOON] Multithreading & Asynchronous Programming

  • [به زودی] برنامه نویسی چند رشته ای و ناهمزمان [COMING SOON] Multithreading & Asynchronous Programming

بخش پاداش Bonus section

  • سخنرانی پاداش Bonus lecture

نمایش نظرات

نظری ارسال نشده است.

آموزش Ultimate C# Masterclass برای سال 2024
خرید اشتراک و دانلود خرید تکی و دانلود | 480,000 تومان (7 روز مهلت دانلود) در صورت خرید اشتراک، این آموزش بدلیل حجم بالا معادل 4 دوره است و 4 دوره از اشتراک شما کم می شود. زمان تقریبی آماده سازی لینک دانلود این دوره آموزشی حدود 5 تا 24 ساعت می باشد.
جزییات دوره
43 hours
505
Udemy (یودمی) udemy-small
27 مهر 1402 (آخرین آپدیت رو دریافت می‌کنید، حتی اگر این تاریخ بروز نباشد.)
6,506
4.7 از 5
دارد
دارد
دارد

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Krystyna Ślusarczyk Krystyna Ślusarczyk

برنامه نویس با علاقه به تدریس

Udemy (یودمی)

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

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