Revisiting the Visitor: the Just Do It Pattern

From LRDE

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Abstract

While software design patterns are a generally useful concept, they are often (and mistakenly) seen as ready-made universal recipes for solving common problems. In a waythe danger is that programmers stop thinking about their actual problem, and start looking for pre-cooked solutions in some design pattern book instead. What people usually forget about design patterns is that the underlying programming language plays a major role in the exact shape such or such pattern will have on the surface. The purpose of this paper is twofold: we show why design pattern expression is intimately linked to the expressiveness of the programming language in use, and we also demonstrate how a blind application of them can in fact lead to very poorly designed code.


Bibtex (lrde.bib)

@Article{	  verna.10.jucs,
  author	= {Didier Verna},
  title		= {Revisiting the Visitor: the Just Do It Pattern},
  journal	= {Journal of Universal Computer Science},
  doi		= {10.3217/jucs-016-02-0246},
  year		= 2010,
  month		= jan,
  volume	= 16,
  pages		= {246--271},
  abstract	= {While software design patterns are a generally useful
		  concept, they are often (and mistakenly) seen as ready-made
		  universal recipes for solving common problems. In a way,
		  the danger is that programmers stop thinking about their
		  actual problem, and start looking for pre-cooked solutions
		  in some design pattern book instead. What people usually
		  forget about design patterns is that the underlying
		  programming language plays a major role in the exact shape
		  such or such pattern will have on the surface. The purpose
		  of this paper is twofold: we show why design pattern
		  expression is intimately linked to the expressiveness of
		  the programming language in use, and we also demonstrate
		  how a blind application of them can in fact lead to very
		  poorly designed code.}
}