| 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 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.