Возможные побочные эффекты при изменении «обычного» кода с помощью анонимной функции - PullRequest
1 голос
/ 03 августа 2020

Я должен изменить код в большом устаревшем приложении. Некоторые части кода необходимо заменить вызовом внутри анонимной функции. Насколько я могу быть уверен в том, что у меня не возникнут побочные эффекты?

Изменение более или менее такое

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...

Можно ли безопасно внести изменения, учитывая, что существует много устаревшего кода?

...