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:
- (void)addObjectToArray:(NSMutableArray *)anArray;
- (void)addObjectToDictionary:(NSMutableDictionary *)aDictionary;
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 nil
or both not nil
?); or
A weakly-typed method that accepts any random Objective-C instance, and has to validate its type at runtime anyway.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With