분해 시 할당이 수행되는 과정은 분해 시 선언을 수행하는 것과 절차상 차이가 있다. 분해 시 할당이 수행되는 과정은 세 단계에 걸쳐 수행된다.
1. 할당할 대상을 평가
2. 할당 연산자의 우측을 평가
3. 할당 수행
이 세 단계는 항상 나열한 순서대로 수행된다. 각 단계 내에서 수행되는 평가는 일반적으로 왼쪽에서 오른쪽으로 수행된다. 평가 순서가 이와 다른 경우는 거의 없지만 전혀 없지는 않다.
TIP ≡
만약 눈앞의 코드를 이해하기 위해 이 절에서 다루고 있는 내용을 반드시 알아야 하는 지경이라면, 그 코드는 아주 ‘나쁜 냄새’를 풍기는 코드임이 분명하다. 따라서 코드를 이해하는 즉시 리팩터링할 것을 권고한다. 분해 과정에서 수행되는 작업들은 일반적인 표현식을 수행하는 것과 다를 바가 없지만, 각 단계별로 여러 번의 평가가 수행되기 때문에 작업 수행 과정에서 발생하는 부가적인 효과가 다소 크게 발현되기도 한다.
이 주제를 장황하게 이야기하고 싶지는 않다. 최악의 예는 아니더라도 실제로 겪을 만한 간단한 예를 보여주는 정도면 충분할 것으로 생각한다. 다음은 (StringBuilder, int) 튜플을 분해하여 기존에 존재하던 StringBuilder와 Length 속성에 그 값을 할당하는 예다. 이 코드는 그리 길지 않지만 뒤엉켜 있는 복잡한 상황을 잘 보여준다.