How to Eliminate Bugs Through High Cohesion

Intuition tells us that methods like these ones suffer from a distinct code smell: CompilationTask getTask( Writer out, JavaFileManager fileManager, DiagnosticListener<? super JavaFileObject> diagnosticListener, Iterable<String> options, Iterable<String> classes, Iterable<? extends JavaFileObject> compilationUnits ); Why is that so? Let's delve into this intuition. Here is an example from the JavaCompiler Javadoc: Iterable<? extends JavaFileObject> compilationUnits1 = … Continue reading How to Eliminate Bugs Through High Cohesion

The Visitor Pattern Re-visited

The visitor pattern is one of the most overrated and yet underestimated patterns in object-oriented design. Overrated, because it is often chosen too quickly (possibly by an architecture astronaut), and then bloats an otherwise very simple design, when added in the wrong way. Underestimated, because it can be very powerful, if you don't follow the … Continue reading The Visitor Pattern Re-visited