نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیویی برای نمایش وجود ندارد.
توضیحات دوره:
این دوره گام به گام شما را از طریق فرایند توسعه شیوه های طراحی دفاعی ، که می تواند کدگذاری دفاعی رایج را جایگزین کند ، به جای بهتر طراحی و اجرای نرم افزار ، هدایت می کند. چند بار باید از موارد صفر ، صفر و موارد شگفت انگیز برخورد با دستورالعمل سوئیچ دفاع کنید. ، غیرممکن است شاخه های دیگر ، و غیره؟ آیا زندگی شما با مشکلات ناشی از داده های غیر منتظره یا وضعیت سیستم نامعتبر دست و پنجه نرم می کند؟ در این دوره ، تکنیک های پیشرفته برنامه نویسی دفاعی ، شما می آموزید که چگونه با استفاده از طراحی دفاع کنید ، به طوری که تقریباً همه کدهای دفاعی صریح با خوشحالی حذف می شوند. ابتدا ، نحوه ساخت اعتبار را کشف خواهید کرد. در مرحله بعدی ، نحوه دقیق طراحی یک رابط عمومی را کشف خواهید کرد. سرانجام ، نحوه متحد سازی جریان خطا را پوشش خواهید داد ، بنابراین هیچ چیز غیرقابل پیش بینی نمی تواند شما را غافلگیر کند. با پایان این دوره ، شما دانش لازم را برای توسعه کارآمد تمرین طراحی دفاعی خود خواهید داشت.
سرفصل ها و درس ها
بررسی اجمالی دوره
Course Overview
-
بررسی اجمالی دوره
Course Overview
درک محدودیت های کد دفاع سنتی
Understanding Limitations of Traditional Defensive Code
-
اولین قانون برنامه نویسی دفاعی
The First Law of Defensive Programming
-
چه چیزی در این دوره دنبال می شود؟
What Follows in This Course?
-
تکنیک های دفاعی سنتی
Traditional Defensive Techniques
-
طراحی دفاعی: یک آزمایش
Defensive Design: An Experiment
-
به نام روش نمی توان دفاع کرد
Called Method Cannot Defend
-
تعریف دامنه های عملکرد
Defining Function Domains
-
خلاصه
Summary
رفع فساد فقط با ایجاد اشیاist سازگار
Removing Corruption by Only Creating Consistent Objects
-
ایجاد اشیا
Creating Objects
-
ایجاد اشیا سازگار
Creating Consistent Objects
-
جوانب مثبت و منفی سازنده های متعدد
Pros and Cons of Multiple Constructors
-
درک محدودیت های سازنده
Understanding Limitations of the Constructor
-
ارتقا Const سازنده به سازنده
Promoting Constructor into Builder
-
تغییرات در اجرای سازنده
Variations in the Builder Implementation
-
خلاصه
Summary
از بین بردن فساد فقط با ایجاد انتقال های معتبر دولتی
Removing Corruption by Only Making Valid State Transitions
-
بهره مندی از مزایای اعتبار سنجی سازنده
Reaping the Benefits of Constructor Validation
-
دفاع در تنظیم کنندگان املاک
Defending in Property Setters
-
شناخت انواع مشخصه
Understanding Distinct Kinds of Properties
-
دفاع در جهش های پیچیده
Defending in Complex Mutations
-
دامنه های عملکرد دوباره بازدید شده است
Function Domains Revisited
-
وقتی سازنده به چندین شی وابسته است
When Constructor Depends on Multiple Objects
-
ایجاد اشیا در مراحل کوچک
Creating Objects in Small Steps
-
سازگار با دوام و پارامتر
Persistence and Parameterized Constructors
-
خلاصه
Summary
کنار گذاشتن کد دفاع با اجتناب از انواع اولیه
Dismissing Defensive Code by Avoiding Primitive Types
-
دلایل جلوگیری از برشمردن
The Reasons to Avoid Enumerations
-
گزینه های جایگزین برای شمارش
Alternatives to Enumerations
-
تبدیل شمارش به یک کلاس
Converting Enumeration to a Class
-
دلایل هرگز ردیف کردن داده ها
The Reasons to Never Stringify Data
-
بهره مندی از مزایای کپسوله سازی رشته ای
Reaping the Benefits of String Encapsulation
-
به طور کلی از انواع ابتدایی پرهیز کنید
Avoiding Primitive Types Altogether
-
مثال: مدل سازی پول
Example: Modeling Money
-
ماندگاری: مقیاس کوچک CQRS و DDD
Persistence: Small-scale CQRS and DDD
-
نشان دادن پایداری
Demonstrating Persistence
-
خلاصه
Summary
تعریف دامنه های عملکرد به عنوان خط اصلی دفاع
Defining Function Domains as the Primary Line of Defense
-
معرفی بندهای گارد
Introducing Guard Clauses
-
محافظت در برابر فقط پوچ
Guarding Against Null Only
-
از قوانین تجارت محافظت نکنید
Don't Guard Business Rules
-
حذف محافظان از طریق طراحی
Removing Guards Through Design
-
تبدیل Domain Rules به Rule Object ها
Turning Domain Rules into Rule Objects
-
تبدیل اشیاule Rule به عناصر فعال
Turning Rule Objects into Active Elements
-
تکمیل فیلتر دانش آموزان
Completing the Students Filter
-
ماندگاری: پرس و جو از مدل های نمایش
Persistence: Querying View Models
-
خلاصه
Summary
طراحی دفاعی به جای نوشتن کد دفاع
Building Defensive Design Instead of Writing Defensive Code
-
حالت کپسوله سازی
Encapsulating State
-
نگهداری اطلاعات مرتبط با هم
Keeping Related Data Together
-
تبدیل موارد زنجیره ای به زنجیره قوانین
Turning Chained Ifs into the Chain of Rules
-
دوست شدن با عبارات منظم
Making Friends with Regular Expressions
-
جایگزینی شاخه با عبارات منظم
Replacing Branching with Regular Expressions
-
انتقال عبارات به پیکربندی
Moving Expressions out to Configuration
-
پایداری: ایجاد و به روزرسانی اشیا Dom دامنه
Persistence: Creating and Updating Domain Objects
-
خلاصه
Summary
اصل کار با اشیا، ، نه با پوچ ها
The Principle of Working with Objects, Not with Nulls
-
درک نقش پوچ
Understanding the Role of Null
-
چرا کامپایلرها هنوز به Null اعتماد می کنند؟
Why Compilers Still Rely on Null?
-
پوچ را از یک روش برگردانید
Do Not Return Null from a Method
-
استفاده از پاسخگویی در محتوای اختیاری
Using Callback on Optional Content
-
بارگذاری بیش از حد API های موجود برای بازگشت هرگز به حالت تهی
Overloading Existing APIs to Never Return Null
-
بازگرداندن یک شی O اختیاری
Returning an Optional Object
-
در حال پیاده سازی نوع گزینه سفارشی
Implementing Custom Option Type
-
مصرف گزینه
Consuming the Option
-
پایداری: ایجاد اشیاain دامنه پیچیده
Persistence: Creating Complex Domain Objects
-
خلاصه
Summary
ساخت مدل دامنه غنی به عنوان یک دفاع موثر با طراحی
Building Rich Domain Model as an Effective Defense by Design
-
بررسی مجدد اشیاm غیرقابل تغییر
Reconsidering Immutable Objects
-
تبدیل کلاسها غیرقابل تغییر
Turning Classes Immutable
-
به طور کلی از Allasing Bugs اجتناب کنید
Avoiding Aliasing Bugs Altogether
-
نکته منفی تغییر ناپذیری
The Downside of Immutability
-
قابلیت تغییر پذیری محدود با ویژگی های تنظیم یک بار
Constrained Mutability with Set-once Properties
-
مصرف اشیا نیمه قابل تغییر
Consuming Semi-mutable Objects
-
با استفاده از مدل تاریخی
Using Historical Model
-
اجرای الگوی تاریخی ساده
Implementing Simple Historical Model
-
خلاصه
Summary
طراحی گردش کار جایگزین به جای دفاع از خطاها
Designing Alternative Workflows Instead of Defending from Errors
-
کدهای وضعیت چه مشکلی دارند؟
What’s Wrong with Status Codes?
-
درک اثرات پرتاب استثناها
Understanding Effects of Throwing Exceptions
-
چه مواردی است که به معنای انجام نیست
What Exceptions Are Not Meant to Do
-
هیچ چیز استثنایی را در موارد استثنایی رها نکنید
Leave Nothing Exceptional in Exceptions
-
برگرداندن یک نوع چند شکل به جای یک استثنا
Returning a Polymorphic Type Instead of an Exception
-
تفکیک مقادیر مثبت و منفی
Separating Positive and Negative Return Values
-
اختراع نوع یا نوع
Inventing the Either Type
-
مصرف هر نوع
Consuming the Either Type
-
خلاصه
Summary
نمایش نظرات