1. Objective C / Говнокод #17794

    −397

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    [array_static removeAllObjects];
    [array_static addObject:@"Files"];
    [array addObjectsFromArray:[filemanager contentsOfDirectoryAtPath:DOCUMENTS error:nil]];
    
    for (int l=0; l<array.count; l++) {
    	for (int j=0; j<array.count; j++) {
    		for (int i=0; i<array.count; i++) {
    			if ([[array objectAtIndex:i] rangeOfString:@"."].location != NSNotFound) {
    				[array removeObjectAtIndex:i];
    			}
    		}
    	}
    }
    
    for (int i = 0; i<array.count; i++) {
    	if (![array_static containsObject:[array objectAtIndex:i]]) {
    		[array_static addObject:[array objectAtIndex:i]];
    	}
    }

    Дали задание добавить фичу в один старый проект. Открыл проект, сижу и наслаждаюсь видом 8)

    Запостил: OUrsus, 16 Марта 2015

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

    • дай я угадаю - написал, потом еще два раза исправлял баг? Судя по количеству циклов.

      100% лучшее решение - через преобразование в множество, учитывая что потом проверяется, добавлен ли уже такой элемент
      Ответить
      • В сабже самый очевидный баг - это изменение коллекции во время перебора ее обьектов. А в первых двух вложенностях циклов вообще нет никакого смысла. И таких мест в проекте десятки. Но, ЧСХ, приложение не раз выкладывалось в AppStore =)
        Ответить
        • хочу не согласиться про изменение коллекции во время перебора - что вам мешает перебрать с изменением коллекции внутри цикла while? Даже с for будет работать. Точно не будет только с for-in

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

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