-
The Reuse/Release Equivalence Principle
What? When we group classes into components we strive towards making some of them reusable so that we can potentially use them for other purposes and also other teams in the organization may use them if they want to. The Reuse/Release Equivalence Principle (REP) states that ”The granule of reuse is the granule of release”. […]
-
Principles of Package and Component Design
One of the most known set of principles regarding software design is probably SOLID. But an important part of structuring software that SOLID does not cover is how to group classes into packages and components in a way that makes it scale, both when the application itself grows but also when the number of teams […]
-
SOLID – The Dependency-Inversion Principle
We have now reached the grande finale of the blog series on SOLID, the big D, The Dependency-Inversion Principle. Let’s jump right into it. Definition The Dependency Inversion Principle (DIP) states: A: High-level modules should not depend on low-level modules. Both should depend on abstractions. B: Abstractions should not depend upon details. Details should depend […]
-
SOLID – The Interface Segregation Principle
We are closing in on the final principle of SOLID. In the last post I wrote about the Liskov Substitution Principle, and now it is time to take a look at The Interface Segregation Principle (ISP). Definition The Interface Segregation Principle was coined by Robert C. Martin. It is explained in his book ”Agile Software […]
-
SOLID – The Liskov Substitution Principle
In the previous post I wrote about the O in SOLID, The Open/Closed Principle. Now it is time for the L, The Liskov Substitution Principle (LSP). Definition In the year 1988, the American Computer Scientist Barbara Liskov, wrote What is wanted here is something like the following substitution property: If for each object o1 of […]
-
SOLID – The Open/Closed Principle
In this third post on the SOLID principles we will look at the Open/Closed Principle (OCP). Definition Bertrand Mayer coined the Open/Closed Principle in 1988, and it states that ”A software entity (class, module, function) should be open for extension but closed for modification”. A software entity complies to OCP if its behavior can be […]
-
SOLID – The Single-Responsibility Principle
You are now reading the second part of my blog series on the SOLID principles. In the first post I introduced the concept and gave some reasons to why you should learn about SOLID. In this part I will write about the first of the five SOLID principles, the Single-Responsibility Principle (SRP). Definition The Single-Responsibility […]
-
SOLID – Introduction
If you have been working with object oriented programming (OOP) for some time you have probably heard of the SOLID principles. There is a lot of information available online on SOLID, of various quality. In this blog series, where you are currently reading the first part, I will cover the principles in detail and explain […]
-
Visual Studio 2019, .NET Core 3.0, and C# 8.0
This week it has been really fun being a .NET developer. Previews of Visual Studio 2019 and .NET Core 3.0 has been made available to the community, making it possible to try out the new upcoming features. I will not just repeat information that you can find on other sites, instead I will provide some […]
-
The different implementations of .NET
Even if you have been working with .NET for some time it can be hard to know the differences between the .NET Framework, .NET Core, and Mono. And what is this .NET Standard thing? In this post I will describe the different architectural components of .NET and hopefully make all of this a bit clearer. […]