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.