•  
  • 0
  •  
0

Какая конструкция кода более правильная?

Интересует мнение программистов, какая конструкция кода более правильная (скорость выполнения, читаемость и т.п.) и почему?

' (1)
If a > b Then
    If a > c Then
        ' некоторый код
        flag = True
    Else
        flag = False
    End If
Else
    flag = True
End If

' или

' (2)
flag = True
If a > b Then
    If a > c Then
        ' некоторый код
    Else
        flag = False
    End If
End If
программирование.
спросил 1031 день назад Аватор пользователя vs vs
30
300

3 ответа:

    •  
    • 7
    •  

    вторая конструкция лучше. заметьте, что flag становится в false только в одной ветке, и всё это разбивается на:

    flag = not (a > b and a <= c)
    
    If a > b and a > c Then
        ' некоторый код
    End If
    

    или

    c1 = (a > b)
    c2 = (a > c)
    
    flag = not (c1 and not c2)
    
    if (c1 and c2) then
        ' некоторый код
    end if
    
    ответил 1031 день назад Аватор пользователя void void
    191 11
    изменил 1031 день назад Аватор пользователя void void
    191 11
    •  
    • 4
    •  

    Второй вариант короче — это плюс в плане читабельности.

    По скорости выполнения — не занимайтесь преждевременной оптимизацией. Когда вы с помощью профайлера выясните, что ботлнек у вас именно в этом куске кода (что очень маловероятно), тогда и будете экспериментировать, что быстрее.

    ответил 1031 день назад Аватор пользователя Paul Paul
    110 5
    •  
    • 0
    •  

    Из этих двух вариантов явно лучше второй. Как минимум потому, что там значение flag=true устанавливается только один раз. И читабельнее, опять же.

    ответил 1031 день назад Аватор пользователя lasquarte lasquarte
    91 5
Чтобы написать ответ, вы должны авторизироваться.