NDepend Blog

Improve your .NET code quality with NDepend

High .NET Code Maintainability: A Case Study

February 13, 2024 8 minutes read High .NET Code Maintainability is the key to achieve both happy management and happy developers: Maintainability lets a product evolve naturally at a sustained...
NDepend February 13, 2024

Architecture of a .NET Application: 8 Case Studies

January 30, 2024 9 minutes read This recent question on Reddit’s Number of projects per solution led to interesting debates. Of course, the answer depends largely on the overall size...
NDepend January 30, 2024

C# Record Explained

January 23, 2024 7 minutes read A C# record is a data-centric type that usually doesn’t contain behaviors.  C# 9 introduced the keyword record to quickly declare a class primarily...
NDepend January 23, 2024

C# ValueTuple Full Guide

January 18, 2024 9 minutes read In 2017 C# 7.0 introduced ValueTuple. This feature makes it convenient to handle lightweight data structures. Here is an example of relying on the...
NDepend January 18, 2024

WPF vs WinForms – Making the Right Decision in 2024

January 12, 2024 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 January 12, 2024

.NET – 7 Decompiler Compared (2024)

January 10, 2024 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 January 10, 2024

C# Index and Range Operators Explained

December 11, 2023 3 minutes read In this post, we are demystifying both the C# index ^ and range .. operators most comprehensively. The index operator ^ Let’s start with...
NDepend December 11, 2023

.NET Native AOT Explained

December 7, 2023 7 minutes read Within the realm of software development, optimizing performance and streamlining efficiency remain essential. The .NET platform has been innovating for 2 decades to provide...
NDepend December 7, 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

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 8 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

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

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

.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

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-65d5fb79db9fd868973297/] 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

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