Я должен изменить код в большом устаревшем приложении. Некоторые части кода необходимо заменить вызовом внутри анонимной функции. Насколько я могу быть уверен в том, что у меня не возникнут побочные эффекты?
Изменение более или менее такое
lines of legacy code...
lines of legacy code...
lines of legacy code...
с
void Execute(Action a) => a();
lines of legacy code...
Execute( () =>
{
lines of legacy code...
lines of legacy code...
});
lines of legacy code...
Функция выполняет Action
, как только вызывается.
Если кому-то нужны дополнительные сведения: я применяю политику SqlAzureExecutionStrategy
в устаревшем приложении. Но он не поддерживает транзакции. Поэтому для каждой транзакции я должен отменить политику.
Ссылка на MS: https://docs.microsoft.com/en-gb/ef/ef6/fundamentals/connection-resiliency/retry-logic
Пример псевдокода: Оригинал
lines of legacy code...
using (var ts = new TransactionScope())
{
lines of legacy code...
ts.Complete();
}
lines of legacy code...
заменить на :
lines of legacy code...
var executionStrategy = new SqlAzureExecutionStrategy(0, 0); //No retry
executionStrategy.Execute( () =>
{
using (var ts = new TransactionScope())
{
lines of legacy code...
ts.Complete();
}
});
lines of legacy code...
Можно ли безопасно внести изменения, учитывая, что существует много устаревшего кода?