Нет «лучшего» пути, все зависит от того, как должен проходить поток управления.
if(a)
do_something();
else if(b)
do_something();
else if(c)
do_something();
else if(d)
do_something();
Это ветвящийся поток управления , означающий, что if
будет проверен в порядке первого появления, а первое из найденных с оценкой true будет выбрано и выполнено среди всех условий, все остальные будут пропущены.
if(a)
do_something();
if(b)
do_something();
if(c)
do_something();
else
do_something();
Это последовательность управляющий поток (хотя ваш последний if является ветвящимся), что означает, что будет проверен весь блок if
, а каждый оцененный в true будет выбран и выполнен.(Хотя последний, как если бы c
был ложным, будет выполнен только блок else.)
Выбор того, какой использовать, полностью зависит от того, что должно быть выполнено.Что касается блоков switch
, они в основном являются ярлыками для потока управления ветвлением, а обычно ведут себя точно так же после компиляции, однако это не обязательно верно (т. Е. Когда не используется break
или какой-либо языкподдержка goto
другой случай и т. д.), но это выходит за рамки.