NDepend Blog
Improve your .NET code quality with NDepend
C# / .NETDev tools / editors / IDEsSoftware / engineering practice
- Posts
- 341 from 16 Jun 2015 to 7 Jun 2026
- Posting
- weekly (39 in the last year)
- Kind
- company blog
- Feed
- https://blog.ndepend.com/feed/
2026 33
- Pointers in C# and Memory Safety: Span vs. C# 16 unsafe
- C# Pattern Matching Explained (2026)
- Maintainability Index: A Practical Guide for C# Developers
- Improve C# code performance with Span<T>
- C# Nullable Types Explained (2026)
- Anatomy of an Open-Source AI Coding Agent Built in .NET: CodeAlta
- An Introduction to Clean Architecture
- C# String Interpolation Explained
- .NET – 7 Decompiler Compared (2026)
- In the Jungle of .NET Obfuscator Tools
- SOLID Design in C#: The Dependency Inversion Principle (DIP) with Examples
- SOLID Design in C#: The Interface Segregation Principle (ISP) with Examples
- Cyclomatic Complexity in C#: Everything You Need to Know
- SOLID Design in C#: The Liskov Substitution Principle (LSP)
- SOLID Design in C#: The Open-Close Principle (OCP)
- SOLID Design in C#: The Single Responsibility Principle (SRP)
- C# 15 Unions
- C# Async/Await Explained: Complete Guide with Examples [2026]
- Modern C# Hello World
- A Guide to Code Coverage Tools for C# in 2026
- Lack of Cohesion of Methods: What Is This And Why Should You Care?
- Visual Studio Enterprise vs. Professional
- C# Record Explained
- Onion Architecture: Going Beyond Layers
- Hexagonal Architecture: What Is It and How Does It Work?
- Boxing in C#: What It Costs You and How to Get Rid of It
- The Road to Visual Studio 2027
- LLM Chat in .NET with IChatClient: The Complete Guide
- Domain-Driven Design Demystified
- REST vs. RESTful: The Difference and Why the Difference Doesn’t Matter
- Software Architecture: The 5 Patterns You Need to Know
- Developing an MCP Server with C#: A Complete Guide
- Layered Architecture: Still a Solid Approach
2025 23
- Visual Studio vs Visual Studio Code: The Ultimate Guide (2026)
- WPF vs WinForms – Making the Right Decision in 2026
- C# Array and List Fastest Loop in 2026
- C# 14 Extension Members: Also Known as Extension Everything
- Modern .NET Reflection with UnsafeAccessor
- .NET 10.0 dotnet run app.cs or file-based program
- C# Optional Parameters Explained
- Interesting Facts about Visual Studio 2026 Preview Insider
- Visual Studio Next Version: What’s Coming and What to Expect
- .NET Native AOT Explained
- C# ValueTuple Full Guide
- What the Singleton Pattern Costs You
- Architecture of a .NET Application: 8 Case Studies
- Clean Architecture in ASP.NET Core
- Understand Directory.Build.props: Centralizing .NET Project Configurations
- C# DateTime Format In A Nutshell
- Vertical Slice Architecture in ASP.NET Core
- C# Index and Range Operators Explained
- Abstract Class vs Interface in C#
- Class vs Struct in C#: Making Informed Choices
- .slnx The New .NET Solution XML File Format
- Computing Technical Debt with NDepend
- Understand NuGet Central Package Management and Transitive Pinning with Examples
2024 38
- The attribute OverloadResolutionPriority in .NET 9 and C# 13
- C# 13 Semi-Auto Properties
- C# 13 params collections
- C# 13 ref struct interfaces and the ‘allows ref struct’ generic anti-constraint
- .NET 9.0 LINQ Performance Improvements
- Alternate Lookup for Dictionary and HashSet in .NET 9
- The Issue with using the Cobertura Code Coverage Format in .NET
- Why Is Counting Lines of Code (LOC) Useful?
- How do you count your number of Lines Of Code (LOC) ?
- The problem with frameworks
- Find C# Code Duplicate
- NDepend vs. ReSharper
- Reporting ReSharper Code Inspections from Your CI/CD Pipeline
- Faster Dictionary in C#
- Fastest C# Enum to String
- Avoid Technical Debt with NDepend
- Enterprise Architecture with .NET [Book Presentation]
- Readonly, Immutable, and Frozen Collections in .NET
- When to create a new .csproj?
- Top 10 C# Recent Improvements
- A Test Coverage Primer for Managers
- C# Discriminated Union: What’s Driving the C# Community’s Inquiries?
- The .NET Generic Math Library
- C# static abstract members
- The .NET 7.0 IParsable<TSelf> interface
- Interview of our Team Lead Patrick Smacchia at WebsitePlanet
- Covariance and Contravariance in C# Explained
- C# 12 New Features
- .NET 8 Top 10 New Features
- Deconstruction in C#
- Will Visual Studio Be Migrated to .NET Core and Become Multi-Platform?
- Improve Your Code Review Game with NDepend
- The .editorconfig files for .NET developers
- Reporting Roslyn Analyzers
- Why Should Managers Care About Static Analysis?
- Managing to Avoid Cobras
- High .NET Code Maintainability: A Case Study
- Following the Software Architecture Career Path
2023 8
- Software Architecture Document? Do You Need One?
- Announcing the Singleton Challenge
- Improve Visual Studio Build Performance
- Improved .NET Debugging Experience with Source Link
- .NET Micro-Optimization and Refactoring Trick
- C#12 class and struct Primary Constructors
- .NET Build Improvement: Stop Wasting Resources
- The NDepend GitHub Action is now available!
2022 8
- C# 11 required members
- C# 11 File Scoped Types
- Managed pointers, Span, ref struct, C#11 ref fields and the scoped keyword
- C# 11 Raw String Literals Explained
- Visual Studio vs. Jetbrains Rider Performance
- WPF / Winforms UI Refactoring: A Case Study
- How to collect return values from Parallel.ForEach?
- C# Binary Search: Fast find of a free slot between 0 and uint.MaxValue
2021 22
- Solution to Visual Studio 2022 messing up Visual Studio 2019
- 5x Lessons Learned from Migrating a Large Legacy to .NET Core
- Debugging a .NET App on Linux from Windows Visual Studio with WSL
- Code Testability: A Case Study
- 3 productivity Resharper features missing in Visual Studio
- What is Code Review? – Guidelines and Best Practices
- Top 10 New .NET 6.0 API
- How to Logically Name Embedded Resources in .csproj?
- Migrating Delegate.BeginInvoke Calls to .NET Core, .NET 5 and .NET 6
- On replacing Thread.Abort() in .NET Core
- Visual Studio 2022 64 bits: Elements of history
- Clean Architecture Refactoring: A Case Study
- Hungarian Notation for Fields in C#
- 6 Reasons Visual Studio Theme Affects Productivity
- Implementing a Domain with POCO (Plain Old CLR Objects)
- 8 Books to Improve as a .NET Developer
- How to Plan Large-Scale Refactoring?
- 10 Reasons Why You Should Write Tests
- Include IL Offset into Production Exception Stack Traces
- Is Artificial Intelligence Assisted Coding the Next Developer Productivity Silver Bullet?
- Visual Studio IntelliCode : AI Assisted Coding
- How we quickly refactored with Resharper more than 23.000 calls to Debug.Assert() into more meaningful assertions
2020 25
- The proper usages of Exceptions in C#
- The proper usages of the keyword ‘static’ in C#
- Code Smell – Primitive Obsession and Refactoring Recipes
- Using C#9 record and init property in your .NET Framework 4.x, .NET Standard and .NET Core projects
- Visualize Code with Software Architecture Diagrams
- When your brain can’t handle the complexity: NDepend and PostSharp
- Strategies to Catch Regression Bugs before Production: A Case Study
- C#9 records: immutable classes
- New C#9 keywords ‘and’ ‘or’ ‘not’
- .NET 5.0 App Trimming and Potential for Future Progress
- Top 10 .NET 5.0 new APIs
- Architecture of a C# game rendered with Blazor, Xamarin, UWP, WPF, and Winforms
- Blazor Internals you need to know
- 14 Visual Studio Web Development Productivity Tips
- 10 Visual Studio Files and Layout Productivity Tips
- 10 Visual Studio Navigation Productivity Tips
- Top 10 Visual Studio Refactoring Tips
- 12 Visual Studio Debugging Productivity Tips
- 10 Visual Studio Ninja Code Editor Productivity Tips
- 10 Visual Studio Solution Explorer Productivity Tips
- Case Study : Complex UI Testing
- Advices to Become a Remote Programmer
- Don’t rely on someone else to protect your software
- Mythical man month : 10 lines per developer day
- Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake
2019 15
- 4 Predictions for the Future of .NET
- .NET Core 3.0 New APIs
- Find API Breaking Changes in your .NET Libraries and Frameworks
- Business Complexity vs. Implementation Complexity
- Answers to arguments against 100% coverage
- Static Analysis and Dependency Injection
- Are SOLID principles Cargo Cult?
- Identify .NET Code Structure Patterns with no Effort
- Ensure that your classes are declared as sealed when possible
- The continuous adaptation of Visual Studio extensions
- Simplifying a Visual Studio extension menu: A Case Study
- An in-depth analysis of .NET Core 3.0 support for WPF and Winforms APIs
- Exploring .NET Core 3.0 new API
- Advanced Code Search : A Case Study
- Service Oriented Architecture: A Dead Simple Explanation
2018 42
- C# Features: An Exhaustive List of the Best Ones
- Coupling in Programming: What This Means and How Not to Get Burned
- Mentoring Software Developers as an Architect
- Self Documenting Code vs. Comments? Turns Out It’s Both or Neither
- Should Architects Write Code? You Bet They Should!
- When Is It Okay to Use a C# Partial Class?
- Extension Methods and the Decline of Traditional OOP
- Shotgun Surgery: What It Is and How to Stop It
- Linq Tutorial: A Complete Beginner’s Gentle Introduction
- You Should Favor Software Products That Include Support in the Price
- Programming to an Interface: A Simple Explanation
- What Is a Good Unit Test? 5 Must-Haves
- Autofac: A Detailed Look Under the Hood at Its Code Quality
- 3 Design Patterns That Have Aged Poorly
- Declarative Programming in Depth
- Continuing Our Clean Architecture Example in C#
- Log4net vs NLog: A Comparison of How They Affect Codebases
- Use NDepend to Measure How SOLID Your Code Is
- Imperative Programming in Depth
- Separation of Concerns, Explained
- NDepend and .NET Fx v4.7.2: an extension method collision and how to solve it easily
- What Makes a Codebase Acquirable?
- A Look at .NET Core 2.1
- Null Is Evil. What’s the Best Alternative? Null.
- In Defense of the SOLID Principles
- Quickly assess your .NET code compliance with .NET Standard
- Moq: A Detailed Look at Its Code Quality
- On the Superiority of the Visual Studio Dark Theme
- C# 8.0 Features: A Final Glimpse Of The Future
- Starting A Clean Architecture Example in C#
- Functional C# Improves Your Design Without Making Your Code Cleaner, Exactly
- C# Immutable Types: Understanding the Attraction
- Checking DDD Ubiquitous Language with NDepend
- New .NET Core 2.1 and ASP.NET Core 2.1 APIs
- CQRS: Understanding From First Principles
- How to Measure Lines of Code? Let’s Count the Ways
- Your Guide to Winning Arguments About Code
- Functional Programming Makes Your Code Not OO…And That’s It
- C# 8.0 Features: Another Glimpse of the Future
- Unit Tests Correlate With Desirable Codebase Properties
- Value Objects: A Tool for Self-Documented Code and Fewer Errors
- Delegation As a Developer: Building the Next You
2017 49
- Cargo Cult Programming Is the Art of Programming by Coincidence
- The Unit Test Effect Study, Refined
- C# 8.0 Features: A Glimpse of the Future
- Unit Testing Doesn’t Affect Codebases the Way You Would Think
- 5 Tips to Help You Visualize Code
- A problem with extension methods
- CRAP Metric Is a Thing And It Tells You About Risk in Your Code
- Code Reuse is Not a Good Goal
- The Singleton Design Pattern: Impact Quantified
- You Have No Excuse for Dead Code
- Static analysis of .NET Core 2.0 applications
- Without Seeing Your Application’s Dependency Graph, You’re Flying Blind
- Get Smart — Go Beyond Cyclomatic Complexity in C#
- C# Tools to Help with Your Code Quality
- Marker Interface Isn’t a Pattern or a Good Idea
- Migrating from HTTP to HTTPS in a IIS / ASP.NET environment
- Understanding the Difference Between Static And Dynamic Code Analysis
- Using NDepend To Get Going Quickly on C# Projects
- The Role of Static Analysis in Testing
- Our experience with using third-party libraries
- How Has Static Code Analysis Changed Through the Years?
- Code Coverage Should Not Be a Management Concern
- Is Your Team Wrong About Your Codebase? Prove It. Visually.
- Code Quality Metrics: Separating the Signal from the Noise
- C# Version History: Examining the Language Past and Present
- What is Static Analysis? An Explanation for Everyone
- Should You Aim for 100 Percent Test Coverage?
- In Defense of Using Your Users as Software Testers
- How to Use NDepend’s Trend Charts
- Fixing Your Tangled Dependency Graph
- Why NDepend Uses Google’s Page Rank
- Is There a Correct Way to Comment Your Code?
- Are Code Rules Meant to Be Broken?
- Things Everyone Forgets Before Committing Code
- How to Evaluate Your Static Analysis Process
- Pulling Your Team Through a Project Crunch
- What DevOps Means for Static Analysis
- Why Expert Developers Still Make Mistakes
- How to Analyze a Static Analyzer
- Static Analysis Issue Management Gets a Boost
- Quality Gates with NDepend to Help You Fail Fast
- Exploring the Technical Debt In Your Codebase
- The One Thing Every Company Can Do to Reduce Technical Debt
- Learning Programming with Hands on Projects
- What Metrics Should the CIO See?
- Recovering from a Mission Critical Whiff
- The Relationship Between Team Size and Code Quality
- Adding Static Analysis to Your Team’s DNA
- The Best Christmas Present to Give Your Developers
2016 51
- New Year’s Resolutions for Code Quality
- Detecting Performance Bottlenecks with NDepend
- How Much Code Should My Developers Be Responsible For?
- How to Scale Your Static Analysis Tooling
- Alternatives to Lines of Code (LOC)
- The Fastest Way to Get to Know NDepend
- Concreteness: Entering the Zone of Pain
- How to Prioritize Bugs on Your To-Do List
- Making Devs, Architects, and Managers Happy with the Static Analysis Tool
- Static Analysis for the Build Machine?
- The Relationship between Static Analysis and Continuous Testing
- How to Perform Effective Team Code Reviews
- Rewrite or Refactor?
- Secrets of Maintainable Codebases
- What to do when Your Colleague Creates Spaghetti Code
- How to Get Company Coding Standards Right (and Wrong)
- Keep Your Codebase Fit with Trend Metrics
- Considering a Port to .NET Core? Use NDepend
- Plugging Leaky Abstractions
- Measure Your Code to Get Back on Track
- Managing Code Analysis Statistics with the NDepend API
- How to Deliver Software Projects on Time
- Static Analysis Isn’t Just for Techies
- Easy to Miss Code Smells
- How to Get an Edge as an IT Management Consultant
- How to Analyze a Complex Solution
- Enforcing Immutability in Multi-Threaded Projects with NDepend
- 5 Habits that Help Code Quality
- How to Get Developers to Adopt Coding Standards
- Managing Risk in your Project with Static Analysis
- Static Analysis and The Other Kind of False Positives
- 4 Ways Custom Code Metrics Improve A Development Team
- The Biggest Mistake Static Analysis Could Have Prevented
- 5 Reasons Architects and Developers Don’t Get Along
- Code Metric Visualization: Lines of Code and Code Coverage
- The Power of CQLinq for Developers
- Let’s Build a Metric: Wrapping Up
- How to Add Static Analysis to Your Development Process
- Legacy Code for Developers: Managing your Manager
- Static Analysis for Small Business
- A Visual Studio script that saves time and pain
- A Manager’s Guide to Legacy Code
- The Better Code Book – Our MVPs of 2015
- How Siemens Healthcare manages over 500 million lines of code – An NDepend Case Study
- Let’s Build a Metric Reconsidered
- Bridging the Communication Gap Between Developers and Architects
- Put a Little NDepend in your Visual Studio
- Calculating the ROI of NDepend
- That Code’s Not Dead – It Went To a Farm Upstate… And You’re Paying For It
- The Case for the NDepend Dashboard Feature
- Visualizing Your (Real) Software Architecture
2015 27
- With Code Metrics, Trends are King
- Let’s Build a Metric: Global and Local Scope
- Be Careful with Software Metaphors
- The Most Important Code Metrics You’ve Never Heard Of
- NDepend updated to Version 6.2
- Let’s Build a Metric: Using CQLinq to Reason about Application State
- Mistakes Dev Managers Make
- Let’s Build a Metric: Incorporating Results and Exploring CQLinq
- Refactoring is a Development Technique, Not a Project
- NDepend Case Study: Increasing Development Efficiency in the Medical Laboratory Sector
- Let’s Build a Metric 7: Counting the Inputs
- Software Rewrite: The Chase
- Relax. Everyone’s Code Rots
- Let’s Build a Metric 6: Cyclomatic Complexity Explained
- Hidden Costs in Your Software
- Let’s Build a Metric 5: Flavors of Lines of Code
- Bringing Objectivity to Clean Code
- The Myth of the Software Rewrite
- Let’s Build a Metric 4: Science and Experiments
- Let’s Build a Metric 3: Compositeness
- Let’s Build a Metric 2: Getting the Units Right
- Let’s Build a Metric 1: What’s in a Metric?
- A Software Architect’s Best Friend
- Toward Bug Free Software: Lines of Defense
- Using NDepend to Make You a Better Programmer
- Static Analysis : Code as Data
- NDepend version 6 insights