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

    −107

    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
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    int sortingFunctionForType2(SomeEntity *item1, SomeEntity *item2, void *context)
    {
        NSString *str1 = nil;
        NSString *str2 = nil;
        
        if ([[item1 version] intValue] >= 10)
        {
            str1 = [NSString stringWithFormat:@"9%@", [item1 version]];
        }
        else
        {
            str1 = [NSString stringWithFormat:@"%@", [item1 version]];
        }
        
        if ([[item2 version] intValue] >= 10)
        {
            str2 = [NSString stringWithFormat:@"9%@", [item2 version]];
        }
        else
        {
            str2 = [NSString stringWithFormat:@"%@", [item2 version]];
        }
        
        return [str1 compare:str2];
    }

    Пояснение. Парсится XMLка, строится объект SomeEntity, у него есть свойство NSString *version, которое, однако, всегда имеет вид @"1", @"2", ... @"20" и так далее.
    То есть, вначале горе-программисту было впадлу при строительстве объекта делать setVersion: [[attributeDict objectForKey: @"version"] intValue];

    Затем возникла задача - сравнить эти числовые значения. Но система упорно считает, что @"10" < @"9".
    Поэтому была изобретена такая портянка.

    Что этот человек в программировании забыл - сказать не могу.

    Запостил: QuickNick, 19 Мая 2012

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

    • Все нормальные люди по субботам сидят дома и в танки играют.
      Аффтар - как всегда тот, кого нельзя называть?
      Ответить
      • Слоупок, все нормальные люди девятого к вечеру танки уже прошли.
        Ответить
      • Кто в танки играет, а кто - отрабатывает долги.
        Ответить
        • Нет, спасибо, я лучше убью время в танках, чем на работе разгребая чей-то гк.
          Ответить
    • В таких местах мне хочется автора убить. Я не понимаю, почему его ещё не уволили.
      Ответить
      • А представь через 20 лет будут также читать твой код и хотеть убить тебя.
        Ответить
      • Вспоминается:
        "Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live."
        Ответить
    • Кстати о птичках, всё хочу спросить. У вас что, Генеральный сменился?
      Ответить

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