مرورگر شما از این ویدیو پشتیبانی نمی کند.
نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
(صرفا برای مشاهده نمونه ویدیو، ممکن هست نیاز به شکن داشته باشید.)
بارگزاری مجدد
توضیحات دوره:
دوره برنامه نویسی عمیق دات نت از مقدماتی تا پیشرفته. روی کد تمیز، عملکرد و تمرین تمرکز کنید. شما درک عمیقی از سی شارپ به دست خواهید آورد. نحوه نوشتن کد سی شارپ با کارایی بالا را خواهید فهمید. شما اصول برنامه نویسی شی گرا را خواهید فهمید مفیدترین الگوهای طراحی را خواهید آموخت. شما یاد خواهید گرفت که کدهایی با کیفیت عالی بنویسید. شما دانش لازم برای مصاحبه شغلی #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
نمایش نظرات