Субъективный Си / Говнокод #9147 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
// Досталось по наследству:

@try {
    if([[items objectAtIndex:indexPath.row] performSelector:@selector(songsArray)]){
        NSArray *songsArray = [[items objectAtIndex:indexPath.row] songsArray];
        for(Song *song in songsArray){
            [song setIsSelected:button.selected];
        }
    }
 }
@catch (NSException *exception) {
    NSLog(@"need fix in next time");
}

// переделал в
if ( [[items objectAtIndex:indexPath.row] respondsToSelector:@selector(songsArray)] )
{
    NSArray *songsArray = [[items objectAtIndex:indexPath.row] songsArray];
    for(Song *song in songsArray){
         [song setIsSelected:button.selected];
    }
}

Запостил: lime lime, (Updated )

Комментарии (5) RSS

        • Суть примера в очень замечательном exception. Мне показалось глупым проверять так наличие метода songsArray у item'a.
          Ответить
  • Т.е. по Вашему Вы нормально переделали? Ну хотя бы вот так сделали бы чтоли, чтобы была ясность:
    id fromSongArrayObj = [items objectAtIndex:indexPath.row];
    NSArray *songsArray = [fromSongArrayObj songsArray];
    for(Song *song in songsArray) {
    [song setIsSelected:button.selected];
    }
    }
    Если id не поддерживает метод songsArray, то переменная songsArray в данном случае будет nil и цикл просто не выполнится. Можно еще if повесить, чтобы прологировать данный момент. Вот это я бы назвал более-менее нормально переделанный код.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8