Simplifying a Visual Studio extension menu: A Case Study
April 2, 2019 4 minutes read NDepend version 2019.2.1 has just been released. This new version proposes a simplified menu for the NDepend Visual Studio extension. Before going further I...
An in-depth analysis of .NET Core 3.0 support for WPF and Winforms APIs
February 28, 2019 5 minutes read .NET Core 3.0 will be RTM soon and it supports WPF and Winforms APIs. In my last post I’ve been exploring .NET Core 3.0...
Exploring .NET Core 3.0 new API
February 21, 2019 9 minutes read .NET Core 3.0 is representing a major step for the .NET community. It is interesting to analyze what’s new in the API directly from...
Advanced Code Search : A Case Study
January 16, 2019 3 minutes read This morning I stumbled on a complex test to write. The need was to create and show a custom Form (written with Windows Form)...
Service Oriented Architecture: A Dead Simple Explanation
January 8, 2019 1 minutes read Service-oriented architecture (SOA) has been with us for a long time. The term first appeared in 1998, and since then it’s grown in popularity....
C# Features: An Exhaustive List of the Best Ones
December 18, 2018 1 minutes read The first post I wrote for the NDepend blog was about C# 8.0 features. That post inspired a sequel, followed by the series’ final...
Coupling in Programming: What This Means and How Not to Get Burned
December 4, 2018 1 minutes read What is coupling in programming? Is it something we want to avoid when we design and write code? If so, why? And more importantly,...
Mentoring Software Developers as an Architect
November 27, 2018 1 minutes read A while back we discussed the unique career path architects have to travel. We wrote that article for developers who want to advance their...
Self Documenting Code vs. Comments? Turns Out It’s Both or Neither
November 20, 2018 1 minutes read It’s been about a month since my last research post, and I’ve been musing about the next topic. What should it be? Well, I’ve...
Domain-Driven Design Demystified
November 6, 2018 1 minutes read Domain-driven design, or DDD, is a software design methodology aimed at producing better software. Engineers achieve this by working closely with domain experts during...
Should Architects Write Code? You Bet They Should!
October 30, 2018 1 minutes read There’s a common misconception that’s permeated our profession: Architects don’t need to write code to do their jobs. Now, this may seem like a...
Hexagonal Architecture: What Is It and How Does It Work?
October 23, 2018 2 minutes read Hexagonal architecture is a model or pattern for designing software applications. The idea behind it is to put inputs and outputs at the edges...
When Is It Okay to Use a C# Partial Class?
October 16, 2018 1 minutes read Today’s post attempts to answer a very simple and straightforward question: “When is it OK to use a C# partial class?” And the answer as...
Extension Methods and the Decline of Traditional OOP
October 9, 2018 1 minutes read A bunch of years ago, I wrote a post on my own personal blog titled, “Why I Don’t Like C# Extension Methods.” Over the...
Shotgun Surgery: What It Is and How to Stop It
October 2, 2018 1 minutes read I really love the name “shotgun surgery” for describing a code smell. It’s sort of an interesting mix of aggressive and comical, and so...
Onion Architecture: Going Beyond Layers
September 25, 2018 1 minutes read So you’ve read about the Onion Architecture and think you get it. There are layers in this architecture. They’re onion-like. And they make your...
Linq Tutorial: A Complete Beginner’s Gentle Introduction
September 18, 2018 1 minutes read There was a time when Linq was a mystery to me. But, now that I’ve learned how to use it, I don’t know how...
You Should Favor Software Products That Include Support in the Price
September 11, 2018 1 minutes read Quite often we talk about architectural concerns on this blog, with topics like application layering or the merits of design patterns. But today I’m...
Programming to an Interface: A Simple Explanation
August 21, 2018 1 minutes read As an architect, you know that programming to an interface is good. It’s what everyone should do. But what does that mean? And why...
What Is a Good Unit Test? 5 Must-Haves
August 14, 2018 1 minutes read In this day and age, unit testing isn’t as controversial as it once was. Sure, you still see the occasional inflammatory, clickbait-y, confrontational “unit...
Layered Architecture: Still a Solid Approach
August 7, 2018 1 minutes read Layered architecture gets a lot of flack. Even though it’s still the most prevalent architecture, we view it as an anti-pattern. It’s old, not...
Autofac: A Detailed Look Under the Hood at Its Code Quality
July 31, 2018 1 minutes read In case you haven’t seen it, I’ve been diving ever-further down the code research rabbit hole. Today it brings me to the Autofac codebase...
3 Design Patterns That Have Aged Poorly
July 10, 2018 1 minutes read Design patterns seem to be a controversial topic. On one hand, many developers seem to love them and treat the famous book by the Gang...
Declarative Programming in Depth
July 3, 2018 1 minutes read Most people that start programming learn to program in an imperative way. Shortly after, they will probably learn a declarative language too. Many developers...
Software Architecture: The 5 Patterns You Need to Know
June 26, 2018 1 minutes read When I was attending night school to become a programmer, I learned several design patterns: singleton, repository, factory, builder, decorator, etc. Design patterns give...
Continuing Our Clean Architecture Example in C#
June 19, 2018 1 minutes read After a somewhat long delay, it’s time to finally continue our series on clean architecture. This is the second post in the inner series...
Log4net vs NLog: A Comparison of How They Affect Codebases
June 12, 2018 1 minutes read Ah, the old “versus” Google search. Invariably, you’re in the research stage of some decision when you type this word into a search engine. ...
Use NDepend to Measure How SOLID Your Code Is
June 5, 2018 1 minutes read Not that long ago, we published a post defending the SOLID principles of object-oriented design. In today’s post, we take it a step further: we’re going...
Imperative Programming in Depth
May 29, 2018 1 minutes read Programming languages come in all shapes and sizes: interpreted vs. compiled, weak vs. strong typing, low-level vs. high-level, terse vs. expressive… There are many...
Separation of Concerns, Explained
May 22, 2018 2 minutes read Software development is a very young field, particularly when you compare it to, say, medicine or law. Despite this, there’s no shortage of wisdom...