Typepad - michaelfeathers.typepad.com - Michael Feathers

Latest News:

The Single Responsibility and Open/Closed Principle are the Same 24 Jul 2013 | 01:44 am

Consider a class C and a set of potential feature changes F'.  If class C has two responsibilities, it is likely that many F in F' will only affect code for one of those responsibilities in C. We app...

Flipping Assumptions with 'Programmer Anarchy' 18 Jul 2013 | 12:47 am

I ran into a blog about Fred George's Programmer Anarchy concept the other day and it felt a bit weird.  By some quirk of fate, I've seen Fred give a talk on the topic three times and it made a strong...

Avoid Null Checks by Replacing Finders with Tellers 17 Jun 2013 | 06:04 pm

One of my pet peeves in programming is null checks. Many codebases are littered with them and, as a result they are often very hard to understand. It's easy enough to complain about null checks, but i...

Guiding Software Development with Design Challenges 6 Jun 2013 | 07:03 pm

There's quite a bit of bad software design in the industry and that's surprising. After all, there hasn't been any lack of guidance about design over the years. From the earliest days of programming, ...

Scalars as Implicit Collections - Removing an Edge 18 Mar 2013 | 01:13 pm

Every once in a while I get irritated by the edges in programming languages. One notorious edge is the absence or presence of a method on an object. The method is either there or it isn't and if you g...

The Fallacy of One Definite Meaning 25 Feb 2013 | 08:25 pm

I saw an interesting article on Hacker News today. It was called The Meaning of 'su', and it outlined the author's quest to understand the name of the su command in Unix. It's a great read. He starts ...

A Type Driven Approach to Functional Design 20 Feb 2013 | 03:30 pm

InfoQ just put up a presentation I did at StrangeLoop last year. It's a bit fuzzy as my talks go because I'm describing a way of thinking about design while doing it. The crux involves thinking about ...

Subtree Selection with Flatten/Select 14 Feb 2013 | 03:24 pm

Trees are wonderful data structures, but traversing them can often be a pain. You can use recursion, as you long as you are confident that you won't overflow your stack. But, if you want to do anythin...

The Framework Superclass Anti-Pattern 31 Jan 2013 | 09:22 pm

Unfortunately, this anti-pattern is too common. It doesn't hurt until it hurts and when it does hurt, it hurts a lot. If you are developing frameworks do not provide superclasses that framework users ...

The Parnas Extraction 22 Jan 2013 | 03:00 pm

There are many reasons to extract methods in old legacy code. Sometimes you just see a small piece of cohesive code and you ask yourself whether you can name it. If you can, extracting that code to a ...

Recently parsed news:

Recent searches: