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

    −98

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    For I = nrow_Start To nrow_Stop
        Do
            If Nrow_Frm1 = I Then Exit Do
            If Nrow_Frm2 = I Then Exit Do
            If Nrow_Frm3 = I Then Exit Do
            If Nrow_Frm4 = I Then Exit Do
        
            Cells(I, ncol_Period).FormulaR1C1 = formula
        Loop While False
    Next I

    И такое встречается..

    Запостил: hexman, 25 Января 2012

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

    • formula 1
      Ответить
    • Крайне оригинально использовать Do таким образом! Решения, приводящие к тому же результату - это
      1. Использование меток
      2. Куча if
      3. Вынос кода в отдельную процедуру

      И все они, в отличие от этого кода, ухудшили бы читабельность программы. Браво кодеру!
      Ответить
      • Да? А так?
        For I = nrow_Start To nrow_Stop
            Select Case I
            Case Nrow_Frm1, Nrow_Frm2, Nrow_Frm3, Nrow_Frm4
            Case Else: Cells(I, ncol_Period).FormulaR1C1 = formula
            End Select
        Next I
        Ответить
        • Проглядел...
          Ответить
        • For I = nrow_Start To nrow_Stop
          Select Case I
          Case Nrow_Frm1, Nrow_Frm2, Nrow_Frm3, Nrow_Frm4
          Exit For
          Case Else
          Cells(I, ncol_Period).FormulaR1C1 = formula
          End Select
          Next

          Не забываем об оптимизации кода, ну хотя бы минимальной

          Двоеточие и имя переменной после Next хотя и сохранены для совместимости, но вы бы еще Goto втулили.
          Ответить

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