C#의 using var 예제에 연산 하나를 더 넣어 생각해 봐요. using 선언은 자신이 속한 범위가 끝날 때 자원을 해제해요. 짧아진 문법만큼이나 그 범위가 중요해요.
어떤 메서드가 중첩된 using 블록에서 input을 얻고, Read(input)을 호출하고, 그 블록을 나온 뒤 Publish()를 호출한다고 해 봐요. 편집기가 이 블록을 메서드 범위의 using 선언으로 바꾸겠다고 제안해요. 그러면 Publish()가 해제보다 먼저 실행돼요. Publish()에서 예외가 나면 메서드를 빠져나가면서 그 연산 뒤에 해제가 이뤄져요. 원래 순서에서는 이미 해제가 끝난 상태였고요.
편집기가 예상한 문법을 정확히 찾았을 수는 있어요. 그렇다고 바뀐 자원 수명이 이 메서드에 적합하다는 근거까지 생기지는 않아요.
이 작은 예제에서 리팩터링을 받아들이는 사람이 범위 변경을 판단하려면, 미리보기에 무엇을 표시해야 할까요?