이것은 발송 메모와 이름에 대해 잘 동작할 것이다. gunyuz는 Gunyuz가 되고. PLEASE LEAVE IT AT THE DOOR는 Please leave it at the door로 바뀐다. 택배 기사의 걱정을 조금 덜어줄 수 있다. 애플리케이션을 잠시 돌려본 후에 이제 도시 이름도 정규화해보고 싶어졌다면, normalizeFields 함수에 다음과 같이 추가한다.
address.City = TextHelper.Capitalize(address.City);
이제 샌프란시스코에서 주문을 받으면 San francisco로 정규화된다. 여러분은 대문자화하는 함수의 로직을 바꿔 어절마다 첫 번째 문자를 대문자화했다. 그래서 도시 이름이 San Francisco가 되도록 했다. 하지만 이렇게 하면 배달 메모가 Please Leave It At The Door가 되어 버린다. 모두 대문자일 때보다는 낫지만, 직장 상사가 완벽한 것을 원한다면 어떻게 해야 할까?
코드를 가능한 한 조금 고치는 가장 쉬운 방법은 Capitalize 함수를 변경하는 것이다. 이러한 경우를 처리하기 위해 매개변수를 하나 추가한다. 코드 3-2는 매개변수 everyWord를 추가로 받아서 모든 단어를 대문자로 바꿀지 혹은 첫 번째 단어만 대문자로 바꿀지를 결정한다. 매개변수 이름을 isCity로 하지 않은 것은 Capitalize 함수의 문제를 해결하는 데 사용하지 않기 때문이다. 이름은 호출하는 쪽이 아니라 상황에 따라 설명할 수 있어야 한다. 다시 본론으로 돌아와서, everyWord가 참이면 텍스트를 어절별로 나누고 각 어절에 대해 자신을 호출하여 각 어절을 개별적으로 대문자화한 다음 단어들을 새로운 문자열로 다시 결합한다.