2014-11-19 2 views
2

Я пытаюсь реорганизовать два метода, и я сталкиваюсь с некоторыми проблемами. Методы очень похожи и выглядят так:Методы рефакторинга, которые очень похожи

- (void)methodOne:(NSString *)id idValue:(NSString *)idValue foo:(NSString *)bar parcel:(NSString)parcel anotherId:(NSString *) anotherIdValue:(NSString *)anotherIdValue{ 
    NSDictionary *params = @{id: idValue, 
          bar: parcel, 
          anotherId: anotherIdVaule}; 

    [self requestWithParams:params 
       method:POST]; 
} 

- (void)methodTwo:(NSString *)id idValue:(NSString *)idValue foo:(NSString *)bar parcel:(NSString)parcel { 
    NSDictionary *params = @{id: idValue, 
          bar: parcel}; 

    [self requestWithParams:params 
       method:POST]; 
} 

Как это сделать?

ответ

1

Одним из способов было бы назвать первым способом от второго способа, таким же образом, что вы называете обозначенную инициализатору от других инициализаторах:

- (void)methodOne:(NSString *)id idValue:(NSString *)idValue foo:(NSString *)bar parcel:(NSString)parcel anotherId:(NSString *) anotherIdValue:(NSString *)anotherIdValue{ 
    NSMutableDictionary *params = [@{id: idValue, bar: parcel} mutableCopy]; 
    if (anotherId != nil && anotherIdVaule != nil) { 
     [params setObject:anotherIdVaule forKey:anotherId]; 
    } 
    [self requestWithParams:params 
       method:POST]; 
} 

- (void)methodTwo:(NSString *)id idValue:(NSString *)idValue foo:(NSString *)bar parcel:(NSString)parcel { 
    [self methodOne:id idValue:idValue foo:bar parcel:parcel anotherId:nil anotherIdValue:nil]; 
} 
Смежные вопросы