NDepend Blog

Improve your .NET code quality with NDepend

.NET – 7 Decompiler Compared (2023)

November 28, 2023 9 minutes read Looking to reverse engineer or disassemble some .NET code? Then learning how to decompile .NET assemblies is an essential skill for any .NET developer...
NDepend November 28, 2023

SOLID Design in C#: The Open-Close Principle (OCP)

November 20, 2023 7 minutes read The Open-Close Principle (OCP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented features....
NDepend November 20, 2023

A Guide to Code Coverage Tools for C# in 2023

November 20, 2023 3 minutes read In this post, we’ll go through 8 different .NET Coverage options and list their features to help you make a decision. But first, I...
Erik Dietrich November 20, 2023

SOLID Design in C#: The Interface Segregation Principle (ISP) with Examples

November 13, 2023 6 minutes read The Interface Segregation Principle (ISP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented features. The...
NDepend November 13, 2023

SOLID Design in C#: The Liskov Substitution Principle (LSP)

November 13, 2023 7 minutes read The Liskov Substitution Principle (LSP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented features. Named after...
NDepend November 13, 2023

SOLID Design in C#: The Single Responsibility Principle (SRP)

November 9, 2023 7 minutes read The Single Responsibility Principle (SRP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented features....
NDepend November 9, 2023

SOLID Design in C#: The Dependency Inversion Principle (DIP) with Examples

November 8, 2023 8 minutes read The Dependency Inversion Principle (DIP) is one of the five essential SOLID design principles. These principles are guidelines for the proper usage of object-oriented...
NDepend November 8, 2023

Visual Studio Enterprise vs. Professional: Essential Differences in 2023

November 8, 2023 1 minutes read If you’re a .NET developer, chances are you’re using Visual Studio, the go-to product for developing .NET applications. However, with several versions available, it...
Erik Dietrich November 8, 2023

Improve C# code performance with Span<T>

November 7, 2023 9 minutes read The structure Span<T> in the namespace System appeared with C# 7.2 in 2017. Span<T> offers type-safe access to a contiguous region of memory. Such...
NDepend November 7, 2023

Visual Studio vs Visual Studio Code: The Ultimate Guide

November 6, 2023 8 minutes read In the world of .NET development, two popular tools stand out: Visual Studio and Visual Studio Code. Both of these tools have their unique strengths...
NDepend November 6, 2023

REST vs. RESTful: The Difference and Why the Difference Doesn’t Matter

November 2, 2023 1 minutes read REST API is one of the most popular APIs in the web development community. What’s the difference between a REST API and a RESTful...
Erik Dietrich November 2, 2023

C# Async Await Explained

November 2, 2023 9 minutes read In 2012 C#5 was released. This version introduced two new keywords async and await. At that time CPU clock speed reached an upper limit...
NDepend November 2, 2023

Software Architecture Document? Do You Need One?

November 1, 2023 1 minutes read In the spirit of the Agile Manifesto, we’ve reduced our dependence on software documentation. In some ways, this has improved our lives. And in...
Erik Dietrich November 1, 2023

C# Record Explained

October 24, 2023 6 minutes read A record is a data-centric type that usually doesn’t contain behaviors.  C# 9 introduced the keyword record to quickly declare a class primarily designed...
NDepend October 24, 2023

.NET 8 Top 10 New Features

October 23, 2023 7 minutes read .NET 8 will be officially release very soon in November 2023. Designated as an LTS (Long Term Support) version, it guarantees ongoing support, updates,...
NDepend October 23, 2023

Unveiling the Impressive Features of Upcoming C# 12

October 23, 2023 5 minutes read Microsoft unveils new features in C# 12 Preview. C# 12 along with .NET 8 will be officially released in November 2023. Let’s explore the...
NDepend October 23, 2023

Vertical Slice Architecture in ASP.NET Core

October 20, 2023 6 minutes read The organization of code in a solution is a subject of frequent debates. Currently, two prominent approaches have garnered attention: Clean Architecture versus Vertical...
NDepend October 20, 2023

Clean Architecture in ASP.NET Core

October 20, 2023 9 minutes read The Clean Architecture approach has gained significant popularity for the design and development of software applications, emphasizing key principles such as maintainability, testability, and...
NDepend October 20, 2023

WPF vs. WinForms: Choosing the Proper Framework for Your Project

October 20, 2023 7 minutes read If you’re a developer faced with the decision of selecting between Windows Presentation Foundation (WPF) and Windows Forms (WinForms) commonly referred to as WPF...
NDepend October 20, 2023

Improve Visual Studio Build Performance

August 11, 2023 7 minutes read Time is your most precious asset and slow build is high in the list of developer’s productivity killers. With slow build the penalty is...
NDepend August 11, 2023

Class vs Struct in C#: Making Informed Choices

August 1, 2023 9 minutes read In C# programming, choosing the right data type between classes and structs is a crucial decision that impacts application performance and design. This article presents...
NDepend August 1, 2023

Improved .NET Debugging Experience with Source Link

June 20, 2023 3 minutes read Source Link is a Microsoft technology that lets .NET developers debug the source code of NuGet packages referenced by their applications. I underlined source...
NDepend June 20, 2023

.NET Micro-Optimization and Refactoring Trick

May 31, 2023 3 minutes read Recently, I made an interesting observation regarding Dictionary<string,T>: the method TryGetValue() is faster when building  with new Dictionary<string,T>(StringComparer.Ordinal). This performance difference can be attributed...
NDepend May 31, 2023

C#12 class and struct Primary Constructors

April 13, 2023 3 minutes read Since C#9 we have the convenient primary constructor syntax for class record (or just record) and struct record: [crayon-656848079a510313536249/] C#12 introduces primary constructor for...
NDepend April 13, 2023

In the Jungle of .NET Obfuscator Tools

April 10, 2023 7 minutes read In this article I will explain our genuine experience with various .NET Obfuscator Tools. We end up explaining that .NET Reactor is the one...
NDepend April 10, 2023

.NET Build Improvement: Stop Wasting Resources

February 4, 2023 5 minutes read I am working on .NET development full-time since 2002 and there is a point that still annoys me after all these years: the default...
NDepend February 4, 2023

C# ValueTuple

January 31, 2023 8 minutes read C# 7.0 introduced Value Tuples which represent both a set of structures in the .NET Base Class Library (BCL) and some convenient C# syntax....
NDepend January 31, 2023

The NDepend GitHub Action is now available!

January 25, 2023 3 minutes read NDepend is a tool for .NET developers and teams that assesses the code quality within the IDE and the CI-CD process. With 17 years...
NDepend January 25, 2023

Deconstruction in C#

January 18, 2023 2 minutes read C# 7.0 introduced the deconstruction syntax. It allows developers to extract in a single expression, properties of an object or elements of a tuple...
NDepend January 18, 2023

The new .NET 7.0 IParsable<TSelf> interface

November 21, 2022 3 minutes read As I explained in the post C# 11 static abstract members, C# 11 let’s write static abstract members in interface. This feature was mostly...
NDepend November 21, 2022