Not at all.
Sometimes you need a method to perform some operation in one fashion or another depending on the situation. And when in your software you need one way or another is usually clear.
Also when you refactor software you need to extend some method behavior. In order not to break the old code you just add one more parameter to the method signature and then add an "old" shorter version of the method calling the long one with some parameter set to a fixed value.
For example:
You have somewhere in your code:
public void SendOrder (Guid customerID, ShipmentOptions options);
It also sends automatically a confirmation email.
Now you decide to add, say, an automated system order feature where you do not wish the emails to be sent. And you also wish to keep the old code intact. So you extend it:
public void SendOrder (Guid customerID, ShipmentOptions options,
bool sendConfirmationEmail);
and add a short version for backwards compatibility:
public void SendOrder (Guid customerID, ShipmentOptions options)
{
public void SendOrder (customerID, options, true);
}
So boolean parameters are just fine.