When you create a public method that will be frequently used by a variety of different clients in many different contexts, it is best to provide as much flexibility in the ways your method can be called as possible. Specifically, some clients may wish to call your method using only a single argument or no argument at all and go with all the standard defaults. Other clients might want more control and wish to pass many arguments to specify all the details about how your method should work. To satisfy the needs of both of these clients (and all the ones in-between), you need to anticipate and try to accommodate all valid options.
Continue...