简体   繁体   中英

Better to allow an object type of 'id' or provide two arguments for two different types for a method?

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 (ie 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

  1. A method with an awkward signature, and unclear behavior depending on its arguments (eg what happens when the arguments are both nil or both not nil ?); or

  2. A weakly-typed method that accepts any random Objective-C instance, and has to validate its type at runtime anyway.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM