1. VisualBasic / Говнокод #10337

    −117

    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
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    For t = 3 To u
     If Cells(t, 204).Text = " " Or Cells(t, 204).Text = "" Then
       If Cells(t + 1, 204).Text = " " Or Cells(t + 1, 204).Text = "" Then
        If Cells(t + 2, 204).Text = " " Or Cells(t + 2, 204).Text = "" Then
         If Cells(t + 3, 204).Text = " " Or Cells(t + 3, 204).Text = "" Then
         If Cells(t + 4, 204).Text = " " Or Cells(t + 4, 204).Text = "" Then
         If Cells(t + 5, 204).Text = " " Or Cells(t + 5, 204).Text = "" Then
         If Cells(t + 6, 204).Text = " " Or Cells(t + 6, 204).Text = "" Then
         If Cells(t + 7, 204).Text = " " Or Cells(t + 7, 204).Text = "" Then
         If Cells(t + 8, 204).Text = " " Or Cells(t + 8, 204).Text = "" Then
         If Cells(t + 9, 204).Text = " " Or Cells(t + 9, 204).Text = "" Then
         If Cells(t + 10, 204).Text = " " Or Cells(t + 10, 204).Text = "" Then
         If Cells(t + 11, 204).Text = " " Or Cells(t + 11, 204).Text = "" Then
         If Cells(t + 12, 204).Text = " " Or Cells(t + 12, 204).Text = "" Then
         If Cells(t + 13, 204).Text = " " Or Cells(t + 13, 204).Text = "" Then
         If Cells(t + 14, 204).Text = " " Or Cells(t + 14, 204).Text = "" Then
         If Cells(t + 15, 204).Text = " " Or Cells(t + 15, 204).Text = "" Then
         If Cells(t + 16, 204).Text = " " Or Cells(t + 16, 204).Text = "" Then
         If Cells(t + 17, 204).Text = " " Or Cells(t + 17, 204).Text = "" Then
         If Cells(t + 18, 204).Text = " " Or Cells(t + 18, 204).Text = "" Then
         If Cells(t + 19, 204).Text = " " Or Cells(t + 19, 204).Text = "" Then
         If Cells(t + 20, 204).Text = " " Or Cells(t + 20, 204).Text = "" Then
         If Cells(t + 21, 204).Text = " " Or Cells(t + 21, 204).Text = "" Then
         If Cells(t + 22, 204).Text = " " Or Cells(t + 22, 204).Text = "" Then
         If Cells(t + 23, 204).Text = " " Or Cells(t + 23, 204).Text = "" Then
         If Cells(t + 24, 204).Text = " " Or Cells(t + 24, 204).Text = "" Then
         If Cells(t + 25, 204).Text = " " Or Cells(t + 25, 204).Text = "" Then
         If Cells(t + 26, 204).Text = " " Or Cells(t + 26, 204).Text = "" Then
         If Cells(t + 27, 204).Text = " " Or Cells(t + 27, 204).Text = "" Then
         If Cells(t + 28, 204).Text = " " Or Cells(t + 28, 204).Text = "" Then
         If Cells(t + 29, 204).Text = " " Or Cells(t + 29, 204).Text = "" Then
         If Cells(t + 30, 204).Text = " " Or Cells(t + 30, 204).Text = "" Then
         If Cells(t + 31, 204).Text = " " Or Cells(t + 31, 204).Text = "" Then
         If Cells(t + 32, 204).Text = " " Or Cells(t + 32, 204).Text = "" Then
         If Cells(t + 33, 204).Text = " " Or Cells(t + 33, 204).Text = "" Then
         If Cells(t + 34, 204).Text = " " Or Cells(t + 34, 204).Text = "" Then
                  GoTo zan4:
              End If
            End If
          End If
        End If
         End If
         End If
            End If
          End If
        End If
         End If
         End If
            End If
          End If
        End If
         End If
         End If
            End If
          End If
        End If
         End If
         End If
            End If
          End If
        End If
         End If
         End If
            End If
          End If
        End If
         End If
         End If
            End If
          End If
        End If
         End If
    Next t
    zan4:

    Кусок реально используемого "проэкта", используется у нас на призводстве.
    И вот-такого штук 10 в коде.

    ноу коментс.

    Запостил: adli__82, 21 Мая 2012

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

    • 5 баллов.
      Правда непонятно зачем там For t = 3 To u - можно же было тоже копипастой сделать.
      Ответить
      • Там в коде больше 5000 линий кода, 85% копи-пейст, с изминением диапазонов либо имён страниц. Наверное For t=3 to u это "КРУТАЯ" оптимизация длинны кода :)
        Ответить
    • А это случайно не автогенерённый файл?
      Ответить
      • Нет это ручная робота, 100% гарантии, я сам офигел когда узнал, просто АФтАр сиего .... учил VBA по макро-рекодеру, ну и вот собственно результат.....
        Ответить
    • Чё он делает ваще?
      Ответить
      • Честно, я и сам не сразу понял :), но "оно" ищет конец данных на странице Excel-я. Последней считается та строка после которой ещё в 35 следующих строках в 204 столбце либо пробел, либо пусто.

        в начале кода стоит инициализация u:

        u = 2000

        а хвост кода выглядел так:
        Next t
        zan4:
        v = t - 1

        Так вот v-это и есть последняя строка с данными на странице.
        Ответить
      • Капитан Очевидность спешит на помощь. Код ищет столбец из пустых значений или пробелов. Если все условия выполнились, прерывает цикл. Следовательно, результат работы кода — значение счётчика t, на котором впервые выполнилось условие.

        Кстати, чему равно t, если цикл отработал до конца?
        Ответить
        • Не могу сказать, мне дали код "поправить", а ЭТОТ фрагмент обрабатывает внешние файлы, примеров которых у меня просто нету :(, правда думаю финальное значение t будет где-то в районе 200-400.
          Ответить
          • Спрашивая, я имел в виду, выполняется ли последний инкремент, если цикл отрабатывает до конца. Оказывается, выполняется: если все проверки провалились и GoTo не сработал, то t будет равно u+1.

            Но автор эту возможность не предусмотрел? То есть u просто заведомо больше количества полезных строк?
            Ответить
            • много лет назад этот факт немного попортил нервы:)
              Ответить
        • Ааа, это ради счётчика t... Я-то привык блин, что счётчик - это что-то, видимое только изнутри цикла...
          Ответить
          • Добро пожаловать в тёплый ламповый спагетти-код.

            В Турбо-Паскале, кстати, так же можно сделать, только без меток, для чего создатели заботливо заготовили break. И переменные в нём нельзя объявлять внутри цикла... Не ради ли подобных штуковин?
            Ответить
            • Не знаю.
              Я знаю, что в Аде, например, счётчик цикла всегда объявляется в заголовке цикла и живёт только внутри цикла.
              Ответить
    • типо прверка на пустую строку таблицы???
      Ответить
    • подозреваю, что там, где 204, еще 0..255 = )
      Ответить
    • Волны End-If-ов красивые. Как будто на море побывал. Только вместо моря спирт, вместо песка - кокаин, а все звезды на ночном небе - чисто кристаллы ЛСД. Психодел-психодел...
      Ответить
      • Или просто Ctrl+C, Ctrl+V,
        Или просто Ctrl+C, Ctrl+V,
        Или просто Ctrl+C, Ctrl+V,
        Или просто Ctrl+C, Ctrl+V,
        Или просто Ctrl+C, Ctrl+V,
        Ответить
        • Если бы просто копипаст, то как объяснить нарастание (а не убывание) отступа? Неет, тут искусство.
          Ответить
    • О боже! Уволить таких кодеров надо
      Ответить
    • Нормальный код, я так тоже пишу
      Ответить
      • Случайно, не игры? А то выходят игрушки с сис.требованиями(а графикой -> 0) , что думаешь не похожий ли код внутри. Товарищи кодеры, предлагаю написать лучшую оптимизацию данного кода, чтобы "CCCV программисты" посмотрели как надо правильно
        З.Ы. CCCV = Ctrl+C, Ctrl+V,
        Ответить
        • К счастью неа :)
          Ответить
        • Дык по скорости if'ы хороши:) только вот читабельность .. кхм..
          Ответить
          • Грамотно расставленные ифы попадают в нужную ветку за O(log(n)), да.
            Ответить
    • Из End If ов можно было нарисовать что нибудь и покруче. Кокаин убивает креативность
      Ответить
    • писали похожие коды для станков с чпу, во встроенном языке не предусмотрены были циклы
      Ответить

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