Если алгоритм зависит от порядка вызова функций в блоке, это не есть хорошо?
это довольно логично на самом деле:
Backup()
Remove()
и 
Remove()
Backup()
дадут немного разный результат
Порядок выполнения операций внутри одной функции в 90% случаев играет роль. Если мы сначала делаем действия, а потом инициализируем значения, то не стоит удивляться ошибкам и постоянно одинаковым результатам. Но есть исключения. 1) Рекомендую свести к предельному минимуму зависимость от порядка выполнения обработчиков событий. Не стоит к одному события делать 2 обработчика, а после молиться что сначала выполнится один, а затем другой. 2) Параллельное исполнение нескольких задач. Опять же - в одном потоке инициализация данных, в другом обработка.. Тот факт что первый поток вы запустили первым не может дать 100% гарантии того, что ко времени запуска второго потока данные будут инициализированы.