While debugging some slow code with a programming partner, we ran across a long series of statements like this:
new Foo(args).run();
Line, after line like this. What is going on? Apparently the original writer was thinking of something like command pattern without any sense of do/undo/redo. But what he wrote instead is another anti-pattern. Rather than littering the VM with a series of use-once instances just to invoke a method on them, he could have said:
Foo.run(args);
And by using a static method have been more clear that this was functional, not object-oriented code. Not every problem is a nail requiring the same hammer.
No comments:
Post a Comment