-
A popular cause the Agile folks like to rally against is the idea of a Big Design Up Front (BDUF). But much like Waterfall, the people doing BDUF will hardly admit that it’s BDUF that they’re doing. Instead, you’re much more likely to get a bevy of really convincing cautionary tales of what...
-
While prepping for the Headspring MVC Boot Camp last week, I had a couple of choices for getting the examples project up and going. I wanted the examples to use an actual domain model, a real IoC tool, and a real ORM underneath the covers. Getting these pieces up and going isn’t necessarily...
-
Surprise surprise, but Uncle Bob got the twitterverse all riled up with another opinionated post, “ Dependency Injection Inversion ”. His basic advice from the post on DI tools is: I think these frameworks are great tools. But I also think you should carefully restrict how and where you use them...
-
In my recent adventures with controller-less actions , and trying to solve the issue of the crazy CRUDController mess I had put myself (and our team/project) into. While some gravitate towards the Singleton pattern to abuse after they learn the GoF patterns , that wasn’t the case for me. ...
-
While plowing through some AutoMapper support issues this weekend, I got a rather troubling one, where a developer got a rather scary exception message: “Operation could destabilize the runtime” Well that’s disturbing. It all came about because they were trying to map to a value type, a scenario...
-
When is Poor Man’s Dependency Injection appropriate? Only in legacy code situations . That’s it. I was called out appropriately on forgetting this, but legacy code, where I have to apply dependency-breaking techniques, does not always afford the opportunity to apply Dependency Injection and IoC...
-
If you’ve ever asked, or been asked, for an example to illustrate a software design principle, you know how frustrating it can be to work with a contrived example. There is rarely any depth to the example, and it lines up so neatly with the concept being explained that the student may have trouble recognizing...
-
One of the core XP practices that resonated with me quite early on was the concept of simple design. When I learned TDD, this practice was further refined with the concept of doing the “simplest thing that could possibly work”. To make a test pass, I would code the simplest thing that could...
-
At last night’s ADNUG talk, Jeremy Miller talked about Convention over Configuration, and many of the principles the Rails community embraces. He showed a few examples of opinionated software, such as FubuMVC. One thing I would have liked more conversation around (but no time, alas), was...
-
Here at Los Techies, we talk a lot about SOLID principles and design. Two of the principles that have always resonated with me are the Single Responsibility Principle and the Dependency Inversion Principle. With the two together, the need for some kind of inversion of control almost becomes...
-
This has been discussed many times before on various mailing lists, and I'm sure there are blog posts about it that are eluding me currently, but I'll put it out there anyway. Interfaces on entities are an anti-pattern (when they're in the vein of ICustomer and Customer) This smells of applying...
-
Lately my co-worker asked me to pair with him and make a code review with him of one of his projects. After having spent some hours on refactoring this legacy application together with my co-worker I want to share some important lessons learned. I call this application a legacy application because it...
-
In the previous two posts I discussed the S of S.O.L.I.D. which is the Single Responsibility Principle (SRP) and the D of S.O.L.I.D. which corresponds to the Dependency Inversion Principle (DI). This time I want to continue this series with the second letter of S.O.L.I.D. namely the O which represents...
-
One of the greatest lessons I had growing up was from my music teacher, on improvement: You’re either getting better or getting worse, but you’re never standing still The same applies to a software system. Any software system’s design either gets better or worse with each change made. Often...
-
In this post I want to discuss the D of the S.O.L.I.D. principles and patterns. The principles and patterns subsumed in S.O.L.I.D. can be seen as the cornerstones of "good" application design. In this context D is the place holder for the dependency inversion principle. In a previous post I...