Are booleans as method arguments unacceptable?

Thomas Koschel picture Thomas Koschel · Sep 25, 2008 · Viewed 7.6k times · Source

A colleague of mine states that booleans as method arguments are not acceptable. They shall be replaced by enumerations. At first I did not see any benefit, but he gave me an example.

What's easier to understand?

file.writeData( data, true );

Or

enum WriteMode {
  Append,
  Overwrite
};

file.writeData( data, Append );

Now I got it! ;-)
This is definitely an example where an enumeration as second parameter makes the code much more readable.

So, what's your opinion on this topic?

Answer

skaffman picture skaffman · Sep 25, 2008

Boolean's represent "yes/no" choices. If you want to represent a "yes/no", then use a boolean, it should be self-explanatory.

But if it's a choice between two options, neither of which is clearly yes or no, then an enum can sometimes be more readable.