Software Patterns and Practices Tutorials

Recommendations on how to design and develop highly performing applications using best practices.

So far, we have published 43 Patterns & Practices tutorials and articles, which have been read by over 2288640 (Two Million Two Hundred Eighty Eight Thousand Six Hundred Forty) developers and architects.

10328 views
Abstract: Almost every developer will be confronted with legacy code early in their career. This can be a demoralizing experience that takes away the pleasure of writing software - especially if this situation continues for too long and developers don't see a way out. And yet, in my experience the way out looks very similar in most cases. Let me show you.
55663 views
Abstract: In this tutorial, I will continue talking about the most important coding practices based on my experience. In this part, I will talk about data modeling, and making state or impurities in general visible.
114698 views
Abstract: This tutorial introduces several architectural and design patterns that can be used to implement common scenarios in .NET desktop and mobile applications.
164619 views
Abstract: This article is an introduction to understand application architecture for the Microsoft technology stack.
109193 views
Abstract: In Part 2 of Best Coding Practices, I talk about keeping a clear separation between units of code that model data, and units of code that model behavior. I also talk about making data objects immutable.
89874 views
Abstract: In this Patterns and Practices tutorial, I will talk about the most important coding practices based on my experience. The first part focuses on Automated Testing.
55209 views
Abstract: The Maybe Monad is a container that represents a value that may or may not exist. In this tutorial, I will go through some methods that make working with the Maybe monad easier.
43606 views
Abstract: In this tutorial, I will discuss function parameters in C#. I will talk about how function parameters tend to become unclear as we maintain our programs and how to fix them.
44987 views
Abstract: In this tutorial, I will talk about the Maybe Monad; a container that represents a value that might or might not exist.
24991 views
Abstract: In this tutorial, I will talk about ways to handle state in multi-threaded C# applications, including race conditions.
19498 views
Abstract: The article talks about type expressiveness and how we can use the functional Either monad in C# to implement complex business logic that reads as simply as a description of sequential operations. We’ll also look at a technique that allows us to express a complex scenario involving multiple systems as pseudocode and then convert that pseudocode into something we can actually ship to production.
32261 views
Abstract: In this tutorial, I will discuss about global state in C# applications. I will talk about the problems of global state and discuss a solution.
58093 views
Abstract: This tutorial aims to be a guide for designing and implementing asynchronous and parallel data processing using the TPL Dataflow library from Microsoft. The TPL Dataflow consists of different building "blocks" that you compose in a pipeline fashion to structure your application in a clear way, allowing you to write readable and reusable C# code.
13424 views
Abstract: In this tutorial, I am going to go through some examples of data object design in C# and discuss some issues with them.
13287 views
Abstract: In this tutorial, I will provide a proof of concept in C# for composing honest methods. We will see how to create honest programs out of many honest methods.
24828 views
Abstract: In this article, I will work on a C# game that contains impure code and work towards making the code pure. I am going to show you how to use PurityAnalyzer—an experimental Visual Studio extension I wrote—to help you write pure code in C#.
66226 views
Abstract: This tutorial demonstrates how to design software using the Command Query Separation (CQS) pattern. We will create a console application and will use C#, Entity Framework, Autofac and Log4Net for our example.
49769 views
Abstract: This C# tutorial describes approaches for making methods/functions more honest. A more honest method makes it easier for readers to understand what the method does by reading its signature, i.e., without reading its implementation.
25694 views
Abstract: This tutorial looks at a new approach to AOP called AOP via functions (in C#) as an attempt to mitigate the issues of the CQS approach.
19604 views
Abstract: This article highlights that software development is a highly complex process with lots of smaller steps that a Software Craftsman should follow in order to build something of quality.
47036 views
Abstract: Learn how to design multi-threading safe data objects in C# and how to “modify” immutable objects using the DataObjectHelper Visual Studio extension. Also use F# to concisely create our data objects, and use them in C# projects.
50370 views
Abstract: This article discusses the dataflow pattern, a variant of the producer-consumer pattern, along with examples of applying this pattern in .NET. Finally, you will also be introduced to ProceduralDataflow, a new library I created to help write clean dataflows.
82524 views
Abstract: This article discusses the producer-consumer pattern in .NET, some reasons why we should use it and demonstrates some examples of how to implement it in .NET.
32229 views
Abstract: Flux is a new application architecture introduced by Facebook in May 2014. This article compares the MVC architecture with Flux from various perspectives.
29785 views
Abstract: This article discusses problems and solutions related to resource management in complex C# applications. It also discusses automatic resource management that exists in the .NET framework.
58504 views
Abstract: This article describes how we can use Generics in C# to make our software more resilient to data-related changes, thereby improving its maintainability.
17618 views
Abstract: Is User Experience (UX) important or is it just a buzzword? This article analyzes the usefulness of UX in an application development process.
56848 views
Abstract: The article explains how Behavior Driven Development (BDD) works and provides a real-world example of how to use it to provide meaningful tests which can act as living documentation.
32752 views
Abstract: This article discusses the treatment of data in large C# software applications. More specifically, it discusses runtime data encapsulation, behavior-only encapsulation, and treatment of state.
105695 views
Abstract: Effective error and exception handling in any kind of an application plays an important role in providing a pleasant experience to the user, when unexpected failures occur. This article talks about some effective error handling strategies that you can use in your projects.
22881 views
Abstract: This article describes how to do unit and integration testing using the Composition Root as the source of Systems Under Test (SUTs).
45785 views
Abstract: We will discuss Code Quality in the .Net ecosystem, with a brief look at tools included in Visual Studio and other third-party commercial tools.
63902 views
Abstract: Singleton is one of the basic software design patterns, but if not implemented correctly can introduce complications in your application. This article discusses common use cases where you should avoid the Singleton pattern.
24866 views
Abstract: C# examples on how we can use the Text Template Transformation Toolkit (T4) to create aspects.
141544 views
Abstract: This article focuses on .NET Design Patterns using C# and takes a fresh view of some of the existing ones and see how we can go about using them in real world dilemmas and concerns.
143646 views
Abstract: Aspect Oriented Programming (AOP) in C# using SOLID principles. We will discuss challenges posed by context-independence in SOLID code bases, and provide a solution for them.
22261 views
Abstract: Agility and contractual development against a fixed price are conceptually two ends of a spectrum. In this article, we will see an option for companies to be agile even when they are executing a contractual fixed bid project
52926 views
Abstract: This article demonstrates how Object Composition with SOLID helps an application evolve.
52108 views
Abstract: Using Pure DI and the single level of abstraction per function rule to create Composition Roots that we can understand and navigate easily
27162 views
Abstract: This article presents a perspective of Liskov Substitution Principle (LSP) and presents an argument against some interpretation and practices of LSP that some people have/follow.
37053 views
Abstract: This article presents the most widely misunderstood concepts about unit testing today and provides relevant information about how the practice actually occurs.
45424 views
Abstract: Essential IT Admin skills that every .NET developer should have before going Live.
59850 views
Abstract: There are many best practices articles and coding guidelines for BizTalk, that are floating around the net, but they are not very conducive and pragmatic enough to the ‘IT services’ industry (especially in an offshore development model), to leverage them in their turnkey or T&M projects. This article attempts to fill those gaps.

  
Article Filter :
Per page: