Лучше позволить объекту типа 'id' или предоставить два аргумента для двух разных типов для метода? - PullRequest
4 голосов
/ 18 октября 2011

Представьте, что метод собирается добавить объект в определенный NSMutableArray или NSMutableDictionary.Лучше (и почему) разрешить только один аргумент с типом id или два - один для массива и один для словаря?

Например:

- (void)addObjectToArray:(NSMutableArray *)anArray
            orDictionary:(NSMutableDictionary *)aDictionary;

против

- (void)addObjectToArrayOrDictionary:(id);

Если использовать первую опцию, я просто передам nil в качестве параметра тому, который мне не нужен (т.е. если я добавлю в словарь, я передамnil в качестве параметра массива).

1 Ответ

9 голосов
/ 18 октября 2011

Ни того, ни другого - я бы реализовал два отдельных метода, один для массива и один для словаря:

- (void)addObjectToArray:(NSMutableArray *)anArray;
- (void)addObjectToDictionary:(NSMutableDictionary *)aDictionary;

Это намного проще, более тестируемо и более легко обслуживаемо, чем

  1. Метод с неудобной подписью и неясным поведением в зависимости от его аргументов (например, что происходит, когда оба аргумента nil или оба не nil?);или

  2. Метод со слабым типом, который принимает любой случайный экземпляр Objective-C и в любом случае должен проверять его тип во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...