O'Reilly logo

Building Maintainable Software, Java Edition by Gijs Wijnholds, Pascal van Eck, Rob van der Leek, Sylvan Rigal, Joost Visser

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 5. Keep Unit Interfaces Small

Bunches of data that hang around together really ought to be made into their own object.

Martin Fowler

Guideline:

  • Limit the number of parameters per unit to at most 4.

  • Do this by extracting parameters into objects.

  • This improves maintainability because keeping the number of parameters low makes units easier to understand and reuse.

There are many situations in the daily life of a programmer where long parameter lists seem unavoidable. In the rush of getting things done, you might add a few parameters more to that one method in order to make it work for exceptional cases. In the long term, however, such a way of working will lead to methods that are hard to maintain and hard to reuse. To keep your code maintainable it is essential to avoid long parameter lists, or unit interfaces, by limiting the number of parameters they have.

A typical example of a unit with many parameters is the render method in the BoardPanel class of JPacman. This method renders a square and its occupants (e.g., a ghost, a pellet) in a rectangle given by the x,y,w,h parameters.

/**
 * Renders a single square on the given graphics context on the specified
 * rectangle.
 *
 * @param square
 *            The square to render.
 * @param g
 *            The graphics context to draw on.
 * @param x
 *            The x position to start drawing.
 * @param y
 *            The y position to start drawing.
 * @param w
 *            The width of this square (in pixels).
 * @param h
 * The height of this square (in pixels). ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required