Making Your C# Code More Functional

Making Your C# Code More Functional

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 3h 54m | 727 MB

With lots of new functional syntax in C#, programmers may struggle to find proper place for it in their notoriously object-oriented code. This course unveils the mystery and puts OO and functional design elements in the right proportion.

Mixing paradigms in modern C# is not an easy endeavor. New functional syntax has its place, but not in every piece of code and every design. In this course, Making Your C# Code More Functional, you will first learn how functional thinking can have positive effect on your software design, while still letting the design remain on the object-oriented side. Next, you will discover how you can leverage new functional syntax to solve problems which are hard to solve using pure object-oriented techniques. Finally, more than anything else, you will have the opportunity to see where the danger of misusing functional coding style lies in object-oriented code. By the end of this course, you should feel comfortable about functional thinking style in object-oriented code, for the better of your designs.

Table of Contents

01 – Course Overview
02 – Programming into a Language, Not in It
03 – What Follows in This Course
04 – Demonstrating the Object-oriented Mindset
05 – Riding on the Polymorphism Wave
06 – Challenging the Object-oriented Mindset
07 – Summary
08 – Recognizing Immutable State as a Neces
09 – Narrowing Down the Role of Public Functions
10 – Completing the Functional Model
11 – Using the Functional Model
12 – Summary
13 – Inventing Pure Functions
14 – Returning a Tuple from a Function
15 – Understanding Referential Transparency
16 – Understanding the Need for Memoization
17 – Summary
18 – Inventing Dynamic Programming as a Generalized Memoization
19 – Implementing Memoized Dynamic Programming Solution
20 – Precalculated Dynamic Programming
21 – Inventing an Algorithm Using Dynamic Programming
22 – Implementing Full Memoization
23 – Understanding the Benefits of Memoization
24 – Summary
25 – Relating Member Functions to Pure Functions
26 – Pure Functions Require Immutable Arguments
27 – Making Functional C#
28 – Completing the Value Type Implementation
29 – Using Value Objects as Keys
30 – Summary
31 – Efficiently Testing Runtime Types
32 – Mapping Types with “switch”
33 – Applying Type Matching in Functional Code
34 – Understanding the Ternary Operator
35 – Pattern Matching with Ternary Operator
36 – Summary
37 – Understanding Metaprogramming with Extension Methods
38 – Externalizing a Pure Function
39 – Attaching a Method to a Type
40 – Living with No Polymorphism in Extension Method
41 – Simulating Polymorphism with Extension Methods
42 – Summary
43 – Function Composition in Object Code
44 – Chaining Method Calls
45 – Building a Powerful Solution on Function Composition
46 – Analyzing the Function Composition Solution
47 – Summary
48 – Recognizing the Need for Optional Objects
49 – Introducing Railway-oriented Programming
50 – Designing the Option Type
51 – Using Optional Objects
52 – Summary
53 – Introducing the Either Type
54 – Implementing the Bare Either Type
55 – Adding Behavior to Either
56 – Demo – Railway Orientation in Business Applications
57 – Applying the Option Type
58 – Applying the Either Type
59 – Summary