Simple is IT, 누구나 보고 누구나 깨닫는 IT

값 객체 패턴(value object pattern) - 미완성 본문

Simple is IT/Programming

값 객체 패턴(value object pattern) - 미완성

currenjin 2021. 8. 26. 00:24

값 객체 패턴(value object pattern)

TDD(Test driven development)에 대해 연마하다가 값 객체 패턴이라는 단어를 발견했어요.
객체 패턴은 객체를 값처럼 쓸 수 있다는 것입니다. 제약사항 중 하나는, 객체의 인스턴스 변수가 생성자를 통해서 일단 설정된 후에는 변하지 않음을 보장하죠.

값 객체를 사용하면 별칭(aliasing) 문제에 대해 걱정할 필요가 없다는 장점이 있어요. 테스트 주도 개발의 저자 켄트 벡(Kent Beck)은 이 별칭 문제에 대해 경험담을 꺼냈습니다.

수표가 하나 있는데 여기에 $5를 설정하고, 또다른 수표에도 아까 설정했던 $5를 설정했다고 치자. 내 경험 중에서 가장 형편없었던 버그는 부주의하게 두 번째 수표의 값을 변화시키는 바람에 첫 번째 수표의 값까지 변하게 되는 문제로 인한 것이었다. 이게 별칭 문제다.


만약 값에 대한 객체를 따로 만들었다면 어땠을까요? 아마 별칭에 대해 신경쓰지 않아도 될 것입니다. $5 가 있을 때, 그것이 영원히 $5 임을 보장받을 수 있다는 뜻이죠. 누군가가 더 높음 값을 원한다면 새로운 객체를 만들어야 할 것입니다.

Comments