문법은 짧아지고 수명은 길어져요. C#의 using 선언은 자원을 감싸는 스코프가 끝날 때 해제해요. 리팩터링이 단순 정리처럼 보일 때는 이 스코프를 놓치기 쉬워요.
중첩된 using 블록에서 input을 얻고, Read(input)을 호출하고, 블록을 나온 뒤 Publish()를 호출하는 메서드가 있다고 해 볼게요. 에디터가 이 블록을 메서드 스코프의 using 선언으로 바꾸자고 제안해요. 받아들이면 Publish()가 input 해제보다 먼저 실행돼요. Publish()가 예외를 던지면 해제는 제어가 메서드를 빠져나갈 때 일어나요. 원래 코드에서는 이미 끝난 뒤였죠.
에디터는 패턴을 정확히 알아봤어요. 이 메서드가 Publish() 동안에도 자원을 쥐고 있어도 되는지는 다른 질문인데, 미리 보기에는 그 단서가 없어요. 지금은 중괄호가 사라지고 들여쓰기가 바뀌는 것만 보여 줘요.
그럼 변경을 받아들이는 사람이 스코프가 옮겨졌다는 걸 알아볼 수 있으려면, 미리 보기는 무엇을 표시해야 할까요?