Imagine that a method is going to add an object to either a certain NSMutableArray or NSMutableDictionary. Is it better (and why) to allow just a single argument with type id, or allow two–one for the array and one for the dictionary?
For example:
- (void)addObjectToArray:(NSMutableArray *)anArray
orDictionary:(NSMutableDictionary *)aDictionary;
vs.
- (void)addObjectToArrayOrDictionary:(id);
If using the first option, I’d just pass nil as the parameter to whichever one I don’t need (i.e. if adding to a dictionary, i’d pass nil as the array parameter).
Neither — I’d implement two separate methods, one for the array and one for the dictionary:
It’s much simpler, more testable and more maintainable than
A method with an awkward signature, and unclear behavior depending on its arguments (e.g. what happens when the arguments are both
nilor both notnil?); orA weakly-typed method that accepts any random Objective-C instance, and has to validate its type at runtime anyway.