DEV Community

Adrián Bailador
Adrián Bailador

Posted on

The DRY, KISS, and YAGNI Principles in .NET

Hello everyone! Today, let's delve into the fascinating world of software development and explore three essential principles that guide us on this journey: DRY, KISS, and YAGNI. Let's unravel their meaning and discover how they can make our lives as .NET developers much simpler and more efficient. Let's get started!

DRY (Don't Repeat Yourself)

Imagine you're working on a project and find yourself writing code to calculate the area of a circle in different parts of the program. Sound familiar? It happens to all of us! But did you know that this goes against the DRY principle?

The DRY principle tells us not to repeat ourselves. Instead of having the same code scattered in different parts of our program, it's better to have a single place to perform that task. Here's an example of how we could apply DRY in C#:

public double CalculateCircleArea(double radius)
{
    return Math.PI * Math.Pow(radius, 2);
}
Enter fullscreen mode Exit fullscreen mode

Additionally, we could reuse this function to calculate the area of other geometric shapes, such as a square or a rectangle, instead of writing a new method for each one.

KISS (Keep It Simple, Stupid)

Now let's talk about the KISS principle. This encourages us to keep things simple.

A good example of applying the KISS principle in C# would be to simplify a function that adds two numbers:

public int SimpleSum(int a, int b)
{
    return a + b;
}
Enter fullscreen mode Exit fullscreen mode

It's important to keep variable, method, and class names descriptive and simple to improve code readability and make it easier to understand and maintain.

YAGNI (You Aren't Gonna Need It)

Finally, we come to the YAGNI principle. This tells us not to add functionality until we really need it. Sometimes, as developers, we tend to add features "just in case." But do we really need them?

For example, imagine you're creating a to-do list application. You might think about adding features like sharing tasks, assigning tasks to others, setting reminders, etc. But if your users only need a simple to-do list, all these additional features would be unnecessary. In this case, the YAGNI principle would advise against adding them until they're truly needed.

It's important to remember that adding functionality prematurely can cause maintenance problems or unnecessary complexity in the code.

Conclusion

The DRY, KISS, and YAGNI principles are fundamental in software development. They help us write code that is cleaner, easier to understand, maintain, and expand. So the next time you sit down to code, remember: don't repeat yourself, keep things simple, and don't add functionality until you really need it.

References

  1. Hunt, A., Thomas, D. (2000). The Pragmatic Programmer: Your Journey to Mastery. Addison-Wesley Professional.
  2. Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall.
  3. Beck, K. (2000). Extreme Programming Explained: Embrace Change. Addison-Wesley Professional.

Top comments (1)

Collapse
 
devh0us3 profile image
Alex P

A lot of people know about the principle DRY

And they forget about the principle WET (Write Everything Twice)

  • Validation on the frontend is not enough - do the same things on the backend side too
  • Validation on the backend is not enough - sometime we need to add constraints in the databases or on the neighbor services
  • And more – encoding the data on the backend in some cases are useful before respond them to front-end, even if we are sure that they will use the data correctly