우리는 1200 줄 길이의 메서드 (스레드 실행 메서드)가있는 레거시 응용 프로그램을 사용합니다. 이 방법은 대부분 긴 문장의 시퀀스가 포함 된 단일 (사실) 동안입니다.코드 부분에 "Extract Method"리팩터링을 적용하는 방법
다음 C# 1 영역에있어서의 50 배 존재한다 :
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
I 새로운 방법이 영역을 추출하는 올바른 가능한 경우 방식 궁금.
내가 말했듯이,이 단편 (영역)은이 방법 내에서 약 50 회 나타납니다. # region 내에서의 반품에 유의하십시오 (잠시 후 종료됩니다).
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs ev)
while(true) {
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
...
#region Cancel pending
if (backgroundWorkerPrincipal.CancellationPending)
{
if (CanCancelThread)
{
ev.Cancel = true;
return;
}
}
#endregion
.
.
.
}
}
실제로 이것이 자바로 태그되어야합니까? – nbrooks
@nbrooks 멋진 잡기. –
.net 4.5에서이 'BackgroundWorker'는'Task','async' 및'await'로 대체 될 수 있습니다. 시도 해봐. –