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...
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...
Following the Software Architecture Career Path
January 10, 2024 3 minutes read I can recall a certain day in my career with remarkable clarity. I say remarkable because this happened well over a decade ago, when...
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....
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...
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...
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....
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...
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...
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...
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...
Announcing the Singleton Challenge
September 21, 2023 2 minutes read About a month ago, I made a post about what the singleton pattern costs you. Although I stated my case in terms of trade-offs...
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...
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...
.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...
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-67e366683eacc403377213/] C#12 introduces primary constructor for...
.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...
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...
C# 11 required members
November 15, 2022 3 minutes read C# 11 proposes the new keyword required that can apply to an instance property or an instance field declaration within a class, a record...
C# 11 File Scoped Types
October 27, 2022 4 minutes read C#11 added the file scoped types feature: a new file modifier that can be applied to any type definition to restrict its usage to...
Managed pointers, Span, ref struct, C#11 ref fields and the scoped keyword
October 25, 2022 9 minutes read The concept of managed pointer exists in the NET runtime and C# since the inception of the platform in the early 2000. Managed pointers...
C# 11 Raw String Literals Explained
August 25, 2022 3 minutes read C# 11 introduces Raw String Literals. Undoubtedly this feature will become very popular because it represents an elegant way to solve some issues with...
Visual Studio vs. Jetbrains Rider Performance
June 28, 2022 5 minutes read I work daily with Visual Studio since 1997 but still use Rider from time to time to keep up with progresses since we plan...
WPF / Winforms UI Refactoring: A Case Study
May 11, 2022 4 minutes read WPF and Winforms are still so massively used that Microsoft fully supports those technologies in .NET Core, .NET 5, 6 , 7 and so...
How to collect return values from Parallel.ForEach?
January 26, 2022 1 minutes read Today I took 10 minutes to answer the 9 years old stackoverflow’s question: How do I collect return values from Parallel.ForEach? I though the...
C# Binary Search: Fast find of a free slot between 0 and uint.MaxValue
January 3, 2022 2 minutes read When a user is exporting a result to a document with NDepend, the tool needs to find a file name not taken in the...
Modern C# Hello World
November 23, 2021 6 minutes read With Visual Studio 2022 when you create a new console project based on .NET 6, the Hello World source code generated is now as...
Solution to Visual Studio 2022 messing up Visual Studio 2019
November 10, 2021 3 minutes read As all .NET developers I am quite excited by Visual Studio 2022 and .NET 6 going RTM. However I noticed that Visual Studio 2022...
5x Lessons Learned from Migrating a Large Legacy to .NET 5/6
October 26, 2021 9 minutes read In January 2020 I wrote the post Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake. Hopefully we followed our...
Debugging a .NET App on Linux from Windows Visual Studio with WSL
September 15, 2021 6 minutes read NDepend analysis, reporting, API and Power-Tools will run on Linux and MacOS with the next version 2021.2. To achieve that, a major refactoring session...