The Curious Engineer

All blogs / C# / .NET

NDepend Blog

blog.ndepend.com

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

  1. Pointers in C# and Memory Safety: Span vs. C# 16 unsafe
  2. C# Pattern Matching Explained (2026)
  3. Maintainability Index: A Practical Guide for C# Developers
  4. Improve C# code performance with Span<T>
  5. C# Nullable Types Explained (2026)
  6. Anatomy of an Open-Source AI Coding Agent Built in .NET: CodeAlta
  7. An Introduction to Clean Architecture
  8. C# String Interpolation Explained
  9. .NET – 7 Decompiler Compared (2026)
  10. In the Jungle of .NET Obfuscator Tools
  11. SOLID Design in C#: The Dependency Inversion Principle (DIP) with Examples
  12. SOLID Design in C#: The Interface Segregation Principle (ISP) with Examples
  13. Cyclomatic Complexity in C#: Everything You Need to Know
  14. SOLID Design in C#: The Liskov Substitution Principle (LSP)
  15. SOLID Design in C#: The Open-Close Principle (OCP)
  16. SOLID Design in C#: The Single Responsibility Principle (SRP)
  17. C# 15 Unions
  18. C# Async/Await Explained: Complete Guide with Examples [2026]
  19. Modern C# Hello World
  20. A Guide to Code Coverage Tools for C# in 2026
  21. Lack of Cohesion of Methods: What Is This And Why Should You Care?
  22. Visual Studio Enterprise vs. Professional
  23. C# Record Explained
  24. Onion Architecture: Going Beyond Layers
  25. Hexagonal Architecture: What Is It and How Does It Work?
  26. Boxing in C#: What It Costs You and How to Get Rid of It
  27. The Road to Visual Studio 2027
  28. LLM Chat in .NET with IChatClient: The Complete Guide
  29. Domain-Driven Design Demystified
  30. REST vs. RESTful: The Difference and Why the Difference Doesn’t Matter
  31. Software Architecture: The 5 Patterns You Need to Know
  32. Developing an MCP Server with C#: A Complete Guide
  33. Layered Architecture: Still a Solid Approach

2025 23

  1. Visual Studio vs Visual Studio Code: The Ultimate Guide (2026)
  2. WPF vs WinForms – Making the Right Decision in 2026
  3. C# Array and List Fastest Loop in 2026
  4. C# 14 Extension Members: Also Known as Extension Everything
  5. Modern .NET Reflection with UnsafeAccessor
  6. .NET 10.0 dotnet run app.cs or file-based program
  7. C# Optional Parameters Explained
  8. Interesting Facts about Visual Studio 2026 Preview Insider
  9. Visual Studio Next Version: What’s Coming and What to Expect
  10. .NET Native AOT Explained
  11. C# ValueTuple Full Guide
  12. What the Singleton Pattern Costs You
  13. Architecture of a .NET Application: 8 Case Studies
  14. Clean Architecture in ASP.NET Core
  15. Understand Directory.Build.props: Centralizing .NET Project Configurations
  16. C# DateTime Format In A Nutshell
  17. Vertical Slice Architecture in ASP.NET Core
  18. C# Index and Range Operators Explained
  19. Abstract Class vs Interface in C#
  20. Class vs Struct in C#: Making Informed Choices
  21. .slnx The New .NET Solution XML File Format
  22. Computing Technical Debt with NDepend
  23. Understand NuGet Central Package Management and Transitive Pinning with Examples

2024 38

  1. The attribute OverloadResolutionPriority in .NET 9 and C# 13
  2. C# 13 Semi-Auto Properties
  3. C# 13 params collections
  4. C# 13 ref struct interfaces and the ‘allows ref struct’ generic anti-constraint
  5. .NET 9.0 LINQ Performance Improvements
  6. Alternate Lookup for Dictionary and HashSet in .NET 9
  7. The Issue with using the Cobertura Code Coverage Format in .NET
  8. Why Is Counting Lines of Code (LOC) Useful?
  9. How do you count your number of Lines Of Code (LOC) ?
  10. The problem with frameworks
  11. Find C# Code Duplicate
  12. NDepend vs. ReSharper
  13. Reporting ReSharper Code Inspections from Your CI/CD Pipeline
  14. Faster Dictionary in C#
  15. Fastest C# Enum to String
  16. Avoid Technical Debt with NDepend
  17. Enterprise Architecture with .NET [Book Presentation]
  18. Readonly, Immutable, and Frozen Collections in .NET
  19. When to create a new .csproj?
  20. Top 10 C# Recent Improvements
  21. A Test Coverage Primer for Managers
  22. C# Discriminated Union: What’s Driving the C# Community’s Inquiries?
  23. The .NET Generic Math Library
  24. C# static abstract members
  25. The .NET 7.0 IParsable<TSelf> interface
  26. Interview of our Team Lead Patrick Smacchia at WebsitePlanet
  27. Covariance and Contravariance in C# Explained
  28. C# 12 New Features
  29. .NET 8 Top 10 New Features
  30. Deconstruction in C#
  31. Will Visual Studio Be Migrated to .NET Core and Become Multi-Platform?
  32. Improve Your Code Review Game with NDepend
  33. The .editorconfig files for .NET developers
  34. Reporting Roslyn Analyzers
  35. Why Should Managers Care About Static Analysis?
  36. Managing to Avoid Cobras
  37. High .NET Code Maintainability: A Case Study
  38. Following the Software Architecture Career Path

2023 8

  1. Software Architecture Document? Do You Need One?
  2. Announcing the Singleton Challenge
  3. Improve Visual Studio Build Performance
  4. Improved .NET Debugging Experience with Source Link
  5. .NET Micro-Optimization and Refactoring Trick
  6. C#12 class and struct Primary Constructors
  7. .NET Build Improvement: Stop Wasting Resources
  8. The NDepend GitHub Action is now available!

2022 8

  1. C# 11 required members
  2. C# 11 File Scoped Types
  3. Managed pointers, Span, ref struct, C#11 ref fields and the scoped keyword
  4. C# 11 Raw String Literals Explained
  5. Visual Studio vs. Jetbrains Rider Performance
  6. WPF / Winforms UI Refactoring: A Case Study
  7. How to collect return values from Parallel.ForEach?
  8. C# Binary Search: Fast find of a free slot between 0 and uint.MaxValue

2021 22

  1. Solution to Visual Studio 2022 messing up Visual Studio 2019
  2. 5x Lessons Learned from Migrating a Large Legacy to .NET Core
  3. Debugging a .NET App on Linux from Windows Visual Studio with WSL
  4. Code Testability: A Case Study
  5. 3 productivity Resharper features missing in Visual Studio
  6. What is Code Review? – Guidelines and Best Practices
  7. Top 10 New .NET 6.0 API
  8. How to Logically Name Embedded Resources in .csproj?
  9. Migrating Delegate.BeginInvoke Calls to .NET Core, .NET 5 and .NET 6
  10. On replacing Thread.Abort() in .NET Core
  11. Visual Studio 2022 64 bits: Elements of history
  12. Clean Architecture Refactoring: A Case Study
  13. Hungarian Notation for Fields in C#
  14. 6 Reasons Visual Studio Theme Affects Productivity
  15. Implementing a Domain with POCO (Plain Old CLR Objects)
  16. 8 Books to Improve as a .NET Developer
  17. How to Plan Large-Scale Refactoring?
  18. 10 Reasons Why You Should Write Tests
  19. Include IL Offset into Production Exception Stack Traces
  20. Is Artificial Intelligence Assisted Coding the Next Developer Productivity Silver Bullet?
  21. Visual Studio IntelliCode : AI Assisted Coding
  22. How we quickly refactored with Resharper more than 23.000 calls to Debug.Assert() into more meaningful assertions

2020 25

  1. The proper usages of Exceptions in C#
  2. The proper usages of the keyword ‘static’ in C#
  3. Code Smell – Primitive Obsession and Refactoring Recipes
  4. Using C#9 record and init property in your .NET Framework 4.x, .NET Standard and .NET Core projects
  5. Visualize Code with Software Architecture Diagrams
  6. When your brain can’t handle the complexity: NDepend and PostSharp
  7. Strategies to Catch Regression Bugs before Production: A Case Study
  8. C#9 records: immutable classes
  9. New C#9 keywords ‘and’ ‘or’ ‘not’
  10. .NET 5.0 App Trimming and Potential for Future Progress
  11. Top 10 .NET 5.0 new APIs
  12. Architecture of a C# game rendered with Blazor, Xamarin, UWP, WPF, and Winforms
  13. Blazor Internals you need to know
  14. 14 Visual Studio Web Development Productivity Tips
  15. 10 Visual Studio Files and Layout Productivity Tips
  16. 10 Visual Studio Navigation Productivity Tips
  17. Top 10 Visual Studio Refactoring Tips
  18. 12 Visual Studio Debugging Productivity Tips
  19. 10 Visual Studio Ninja Code Editor Productivity Tips
  20. 10 Visual Studio Solution Explorer Productivity Tips
  21. Case Study : Complex UI Testing
  22. Advices to Become a Remote Programmer
  23. Don’t rely on someone else to protect your software
  24. Mythical man month : 10 lines per developer day
  25. Not planning now to migrate your .NET 4.8 legacy, is certainly a mistake

2019 15

  1. 4 Predictions for the Future of .NET
  2. .NET Core 3.0 New APIs
  3. Find API Breaking Changes in your .NET Libraries and Frameworks
  4. Business Complexity vs. Implementation Complexity
  5. Answers to arguments against 100% coverage
  6. Static Analysis and Dependency Injection
  7. Are SOLID principles Cargo Cult?
  8. Identify .NET Code Structure Patterns with no Effort
  9. Ensure that your classes are declared as sealed when possible
  10. The continuous adaptation of Visual Studio extensions
  11. Simplifying a Visual Studio extension menu: A Case Study
  12. An in-depth analysis of .NET Core 3.0 support for WPF and Winforms APIs
  13. Exploring .NET Core 3.0 new API
  14. Advanced Code Search : A Case Study
  15. Service Oriented Architecture: A Dead Simple Explanation

2018 42

  1. C# Features: An Exhaustive List of the Best Ones
  2. Coupling in Programming: What This Means and How Not to Get Burned
  3. Mentoring Software Developers as an Architect
  4. Self Documenting Code vs. Comments? Turns Out It’s Both or Neither
  5. Should Architects Write Code? You Bet They Should!
  6. When Is It Okay to Use a C# Partial Class?
  7. Extension Methods and the Decline of Traditional OOP
  8. Shotgun Surgery: What It Is and How to Stop It
  9. Linq Tutorial: A Complete Beginner’s Gentle Introduction
  10. You Should Favor Software Products That Include Support in the Price
  11. Programming to an Interface: A Simple Explanation
  12. What Is a Good Unit Test? 5 Must-Haves
  13. Autofac: A Detailed Look Under the Hood at Its Code Quality
  14. 3 Design Patterns That Have Aged Poorly
  15. Declarative Programming in Depth
  16. Continuing Our Clean Architecture Example in C#
  17. Log4net vs NLog: A Comparison of How They Affect Codebases
  18. Use NDepend to Measure How SOLID Your Code Is
  19. Imperative Programming in Depth
  20. Separation of Concerns, Explained
  21. NDepend and .NET Fx v4.7.2: an extension method collision and how to solve it easily
  22. What Makes a Codebase Acquirable?
  23. A Look at .NET Core 2.1
  24. Null Is Evil. What’s the Best Alternative? Null.
  25. In Defense of the SOLID Principles
  26. Quickly assess your .NET code compliance with .NET Standard
  27. Moq: A Detailed Look at Its Code Quality
  28. On the Superiority of the Visual Studio Dark Theme
  29. C# 8.0 Features: A Final Glimpse Of The Future
  30. Starting A Clean Architecture Example in C#
  31. Functional C# Improves Your Design Without Making Your Code Cleaner, Exactly
  32. C# Immutable Types: Understanding the Attraction
  33. Checking DDD Ubiquitous Language with NDepend
  34. New .NET Core 2.1 and ASP.NET Core 2.1 APIs
  35. CQRS: Understanding From First Principles
  36. How to Measure Lines of Code? Let’s Count the Ways
  37. Your Guide to Winning Arguments About Code
  38. Functional Programming Makes Your Code Not OO…And That’s It
  39. C# 8.0 Features: Another Glimpse of the Future
  40. Unit Tests Correlate With Desirable Codebase Properties
  41. Value Objects: A Tool for Self-Documented Code and Fewer Errors
  42. Delegation As a Developer: Building the Next You

2017 49

  1. Cargo Cult Programming Is the Art of Programming by Coincidence
  2. The Unit Test Effect Study, Refined
  3. C# 8.0 Features: A Glimpse of the Future
  4. Unit Testing Doesn’t Affect Codebases the Way You Would Think
  5. 5 Tips to Help You Visualize Code
  6. A problem with extension methods
  7. CRAP Metric Is a Thing And It Tells You About Risk in Your Code
  8. Code Reuse is Not a Good Goal
  9. The Singleton Design Pattern: Impact Quantified
  10. You Have No Excuse for Dead Code
  11. Static analysis of .NET Core 2.0 applications
  12. Without Seeing Your Application’s Dependency Graph, You’re Flying Blind
  13. Get Smart — Go Beyond Cyclomatic Complexity in C#
  14. C# Tools to Help with Your Code Quality
  15. Marker Interface Isn’t a Pattern or a Good Idea
  16. Migrating from HTTP to HTTPS in a IIS / ASP.NET environment
  17. Understanding the Difference Between Static And Dynamic Code Analysis
  18. Using NDepend To Get Going Quickly on C# Projects
  19. The Role of Static Analysis in Testing
  20. Our experience with using third-party libraries
  21. How Has Static Code Analysis Changed Through the Years?
  22. Code Coverage Should Not Be a Management Concern
  23. Is Your Team Wrong About Your Codebase? Prove It. Visually.
  24. Code Quality Metrics: Separating the Signal from the Noise
  25. C# Version History: Examining the Language Past and Present
  26. What is Static Analysis? An Explanation for Everyone
  27. Should You Aim for 100 Percent Test Coverage?
  28. In Defense of Using Your Users as Software Testers
  29. How to Use NDepend’s Trend Charts
  30. Fixing Your Tangled Dependency Graph
  31. Why NDepend Uses Google’s Page Rank
  32. Is There a Correct Way to Comment Your Code?
  33. Are Code Rules Meant to Be Broken?
  34. Things Everyone Forgets Before Committing Code
  35. How to Evaluate Your Static Analysis Process
  36. Pulling Your Team Through a Project Crunch
  37. What DevOps Means for Static Analysis
  38. Why Expert Developers Still Make Mistakes
  39. How to Analyze a Static Analyzer
  40. Static Analysis Issue Management Gets a Boost
  41. Quality Gates with NDepend to Help You Fail Fast
  42. Exploring the Technical Debt In Your Codebase
  43. The One Thing Every Company Can Do to Reduce Technical Debt
  44. Learning Programming with Hands on Projects
  45. What Metrics Should the CIO See?
  46. Recovering from a Mission Critical Whiff
  47. The Relationship Between Team Size and Code Quality
  48. Adding Static Analysis to Your Team’s DNA
  49. The Best Christmas Present to Give Your Developers

2016 51

  1. New Year’s Resolutions for Code Quality
  2. Detecting Performance Bottlenecks with NDepend
  3. How Much Code Should My Developers Be Responsible For?
  4. How to Scale Your Static Analysis Tooling
  5. Alternatives to Lines of Code (LOC)
  6. The Fastest Way to Get to Know NDepend
  7. Concreteness: Entering the Zone of Pain
  8. How to Prioritize Bugs on Your To-Do List
  9. Making Devs, Architects, and Managers Happy with the Static Analysis Tool
  10. Static Analysis for the Build Machine?
  11. The Relationship between Static Analysis and Continuous Testing
  12. How to Perform Effective Team Code Reviews
  13. Rewrite or Refactor?
  14. Secrets of Maintainable Codebases
  15. What to do when Your Colleague Creates Spaghetti Code
  16. How to Get Company Coding Standards Right (and Wrong)
  17. Keep Your Codebase Fit with Trend Metrics
  18. Considering a Port to .NET Core? Use NDepend
  19. Plugging Leaky Abstractions
  20. Measure Your Code to Get Back on Track
  21. Managing Code Analysis Statistics with the NDepend API
  22. How to Deliver Software Projects on Time
  23. Static Analysis Isn’t Just for Techies
  24. Easy to Miss Code Smells
  25. How to Get an Edge as an IT Management Consultant
  26. How to Analyze a Complex Solution
  27. Enforcing Immutability in Multi-Threaded Projects with NDepend
  28. 5 Habits that Help Code Quality
  29. How to Get Developers to Adopt Coding Standards
  30. Managing Risk in your Project with Static Analysis
  31. Static Analysis and The Other Kind of False Positives
  32. 4 Ways Custom Code Metrics Improve A Development Team
  33. The Biggest Mistake Static Analysis Could Have Prevented
  34. 5 Reasons Architects and Developers Don’t Get Along
  35. Code Metric Visualization: Lines of Code and Code Coverage
  36. The Power of CQLinq for Developers
  37. Let’s Build a Metric: Wrapping Up
  38. How to Add Static Analysis to Your Development Process
  39. Legacy Code for Developers: Managing your Manager
  40. Static Analysis for Small Business
  41. A Visual Studio script that saves time and pain
  42. A Manager’s Guide to Legacy Code
  43. The Better Code Book – Our MVPs of 2015
  44. How Siemens Healthcare manages over 500 million lines of code – An NDepend Case Study
  45. Let’s Build a Metric Reconsidered
  46. Bridging the Communication Gap Between Developers and Architects
  47. Put a Little NDepend in your Visual Studio
  48. Calculating the ROI of NDepend
  49. That Code’s Not Dead – It Went To a Farm Upstate… And You’re Paying For It
  50. The Case for the NDepend Dashboard Feature
  51. Visualizing Your (Real) Software Architecture

2015 27

  1. With Code Metrics, Trends are King
  2. Let’s Build a Metric: Global and Local Scope
  3. Be Careful with Software Metaphors
  4. The Most Important Code Metrics You’ve Never Heard Of
  5. NDepend updated to Version 6.2
  6. Let’s Build a Metric: Using CQLinq to Reason about Application State
  7. Mistakes Dev Managers Make
  8. Let’s Build a Metric: Incorporating Results and Exploring CQLinq
  9. Refactoring is a Development Technique, Not a Project
  10. NDepend Case Study: Increasing Development Efficiency in the Medical Laboratory Sector
  11. Let’s Build a Metric 7: Counting the Inputs
  12. Software Rewrite: The Chase
  13. Relax. Everyone’s Code Rots
  14. Let’s Build a Metric 6: Cyclomatic Complexity Explained
  15. Hidden Costs in Your Software
  16. Let’s Build a Metric 5: Flavors of Lines of Code
  17. Bringing Objectivity to Clean Code
  18. The Myth of the Software Rewrite
  19. Let’s Build a Metric 4: Science and Experiments
  20. Let’s Build a Metric 3: Compositeness
  21. Let’s Build a Metric 2: Getting the Units Right
  22. Let’s Build a Metric 1: What’s in a Metric?
  23. A Software Architect’s Best Friend
  24. Toward Bug Free Software: Lines of Defense
  25. Using NDepend to Make You a Better Programmer
  26. Static Analysis : Code as Data
  27. NDepend version 6 insights