Reduce implicit parameter passing

From CSSEMediaWiki
Revision as of 22:28, 18 August 2009 by TobiW (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This rule suggests methods should always use explicit parameters. In some situations, instance variables are treated like global variables and are used as implicit parameters among methods within the same class. Implicit parameters tie methods to the class, and it also hides the necessary information from outsiders who wish to use the method.

The undesired results of using implicit parameters are

  • making it difficult to split a class into parts
  • leading other programmers to misuse methods as they may not be aware of all implicit parameters

Changing the implicit parameters to explicit parameters will overcome these problems, although beware of too many parameters.

Example

The example shows a configuration class and a program which uses these settings. The first example works with the config object as an implicit parameter (passed to the program by calling setConfig()), the second example passes the config object to the functions that need the config settings. Depending on the amount of parameters, execute() or step() of the explicit example might work better (see also Long parameter list smell).

ImplicitExplicitParams.png

Personal tools