1 Here is Why Calling a Virtual Function from the Constructor is a Bad Idea View
2 What Makes List<T> So Efficient in .NET? View
3 Nondestructive Mutation and Records in C# View
4 Understanding Covariance and Contravariance of Generic Types in C# View
5 Using Record Types in C# View
6 Unit Testing Case Study: Calculating Median View
7 The Fast Pencil Fallacy in Software Development View
8 Favoring Object-oriented over Procedural Code: A Motivational Example View
9 From Dispose Pattern to Auto-disposable Objects in .NET View
10 What Makes Functional and Object-oriented Programming Equal View
11 Overcoming the Limitations of Constructors View
12 Does the Command Pattern Require Undo? View
13 What Makes while Loop a Poor Choice in Programming View
14 How to Wrap System.Random Into an Infinite IEnumerable<int> Sequence View
15 Substituting the Builder with the Sequence of Factory Methods View
16 Custom Implementation of the Option/Maybe Type in C# View
17 Pros and Cons of Multiple Constructors View
18 Defensive Design: An Experiment View
19 Understanding Closures in C# View
20 Understanding Delegates and Higher-Order Functions in C# View
21 How to Derive a Class and Not Invite Bugs Doing So View
22 Simple Design by Example: Making Published Content Editable View
23 The Case against Throwing ArgumentException and the Like View
24 How to Write Unit Tests for Generic Classes View
25 How to Write Unit Tests for Temporal Coupling between Method Calls View
26 How to Organize Repository Interfaces to Support CQRS Architecture View
27 How to Write a Test to Prove that Collection was Loaded Eagerly? View
28 How to Avoid the Need to Implement ICloneable Interface and What to Do Instead View
29 Poor Man’s Polymorphism or What’s so Wrong about If-Then-Else? View
30 Advances in Applying the Builder Design Pattern View
31 Best Practices Implementing the IEnumerable Interface View
32 What Makes Design Patterns Fail So Many Times? View
33 How to Implement Lazy Default-If-Empty Functionality on Collections View
34 Interface Segregation Principle and Calling Protocols View
35 LINQ Query for Blacklist-Based Spam Filter View
36 Understanding the Option (Maybe) Functional Type View
37 Why do We Need Guard Clauses? View
38 How to Measure Module Coupling and Instability Using NDepend View
39 How to Use Module Coupling and Instability Metrics to Guide Refactoring View
40 LINQ Expression to Find All Modes of an Array View
41 LINQ Expression to Find Mode of an Array View
42 How to Measure Abstractness of Modules Using NDepend and CQLinq View
43 How to Reduce Cyclomatic Complexity Part 15: Guard Clause View
44 How to Reduce Cyclomatic Complexity Part 14: Service Locator Applied View
45 How to Reduce Cyclomatic Complexity Part 13: Service Locator Pros and Cons View
46 How to Reduce Cyclomatic Complexity Part 12: Composite Design Pattern View
47 How to Reduce Cyclomatic Complexity Part 11: Working With Collections View
48 How to Reduce Cyclomatic Complexity Part 10: Domain Logic in Factories View
49 How to Reduce Cyclomatic Complexity Part 9: Switchable Factory Methods View
50 How to Reduce Cyclomatic Complexity Part 8: Map-Reduce Queries View
51 How to Reduce Cyclomatic Complexity Part 7: Extension Methods View
52 How to Reduce Cyclomatic Complexity Part 6: Functional Domain Logic View
53 How to Reduce Cyclomatic Complexity Part 5: Option<T> Functional Type View
54 How to Reduce Cyclomatic Complexity Part 4: Avoiding Null Parameters View
55 How to Reduce Cyclomatic Complexity Part 3: Avoiding Optional Parameters View
56 How to Reduce Cyclomatic Complexity Part 2: Special Case Pattern View
57 How to Reduce Cyclomatic Complexity Part 1: Null Object Pattern View
58 Regex and LINQ Query to Split Text into Distinct Words View
59 Design Technique to Reduce Number of Generic Parameters View
60 LINQ Expression to Find All Prime Numbers View
61 LINQ Expression to Test If a Number is Prime View
62 How to Write Functional Code in C#: An Example View
63 How to Avoid Returning Null from a Method View
64 Cascading Abstract Factories to Eliminate Dependencies View
65 Object Composition Using Chain of Responsibility Design Pattern View
66 How to Easily Test Validation Logic in Constructors in C# View
67 How to Apply Visitor Pattern Without Breaking Encapsulation of Concrete Elements View
68 How to Ensure Internal Consistency of Mutable and Immutable Objects View
69 How to Implement Unit Tests for Equals and GetHashCode Methods View
70 Best Practices Using Enums in .NET View
71 How to Validate Enumeration Values in Property Setters View
72 How to Set Property Values using LINQ to Objects and Reflection View
73 How to Set Property Value using Reflection on a Value Type View
74 How to Get Property Values using LINQ to Objects View
75 How to Implement IComparable<T> Interface in Base and Derived Classes View
76 The ICloneable Controversy: Should a Class Implement ICloneable or Not? View
77 How to Validate String Properties in Business Objects View
78 How to Override Equals and GetHashCode Methods in Base and Derived Classes View
79 How to Bulk Insert Complex Objects into SQL Server Database View
80 How to Implement Collection Property to Contain Unique Objects View
81 How to Version SQL Server Database Schema View
82 Lesson 6 - Multiple Inheritance View
83 Lesson 5 - Abstract Methods View
84 How to Handle Exceptions from Background Worker Thread in .NET View
85 Lesson 4 - Polymorphism View
86 Lesson 3 - Encapsulation View
87 Lesson 2 - Class Inheritance View
88 Lesson 1 - From Structure to Class View
89 How to Display Row Numbers in WPF ListView Control with Static Content View
90 How to Show Progress and to Cancel Asynchronous Operation Using WPF ObjectDataProvider and XAML View
91 How to Implement ICloneable Interface in Derivable Classes in .NET View


Zoran Horvat

Zoran Horvat is the Principal Consultant at Coding Helmet, speaker and author of 100+ articles, and independent trainer on .NET technology stack. He can often be found speaking at conferences and user groups, promoting object-oriented and functional development style and clean coding practices and techniques that improve longevity of complex business applications.

  1. Pluralsight
  2. Udemy
  3. Twitter
  4. YouTube
  5. LinkedIn
  6. GitHub