Sha256: e11f89effc445c24616a47566291fc20a8151b6a15c61e878c58bc5d2ed830c2
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
# Boolean Parameter ## Introduction _Boolean Parameter_ is a case of [Control Couple](Control-Couple.md), where a method parameter is defaulted to true or false. A _Boolean Parameter_ effectively permits a method's caller to decide which execution path to take. This is a case of bad cohesion. You're creating a dependency between methods that is not really necessary, thus increasing coupling. ## Example Given ```Ruby class Dummy def hit_the_switch(switch = true) if switch puts 'Hitting the switch' # do other things... else puts 'Not hitting the switch' # do other things... end end end ``` Reek would emit the following warning: ``` test.rb -- 3 warnings: [1]:Dummy#hit_the_switch has boolean parameter 'switch' (BooleanParameter) [2]:Dummy#hit_the_switch is controlled by argument switch (ControlParameter) ``` Note that both smells are reported, _Boolean Parameter_ and _Control Parameter_. ## Getting rid of the smell This is highly dependent on your exact architecture, but looking at the example above what you could do is: * Move everything in the `if` branch into a separate method * Move everything in the `else` branch into a separate method * Get rid of the `hit_the_switch` method alltogether * Make the decision what method to call in the initial caller of `hit_the_switch` ## Current support in Reek Reek can only detect a _Boolean Parameter_ when it has a default initializer like in the example above. ## Configuration _Boolean Parameter_ supports the [Basic Smell Options](Basic-Smell-Options.md).
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
reek-6.0.2 | docs/Boolean-Parameter.md |