객체지향 생활 체조 - 규칙 3: 원시값과 문자열의 포장

Photo by Viktor Forgacs on Unsplash

모든 원시값과 문자열을 포장(Wrap)한다.

이 규칙이 가지는 의미

"int 값 하나 자체는 그냥 아무 의미 없는 스칼라 값일 뿐이다" 책에서는 이 문장을 시작으로 규칙을 설명합니다. 일반적으로 프로그래밍에서 쓰이는 원시값들은 값(리터럴)의 정의만 가질 뿐 별 다른 의미를 지니지 못합니다. 값이 값 이상의 의미를 가진다는 것은 어쩌면 이상한 이야기 일지 모릅니다. 다만 원시적인 값을 포장(Wrap)을 통해 이름을 가질 수 있게 하면 어떨까요? 이름을 가진다는 것은 사소할지 모르지만 프로그래머에게는 의미를 전달합니다. 즉 프로그래밍에서 객체가 이름을 가진다는 것은 어떤 것을 표현하는지 왜 쓰이고 있는지에 대한 정보를 말한다고 이야기할 수 있습니다.

 

int number = 1;

 

int 타입의 원시값을 단순히 사용하면 다음과 같이 사용할 수 있습니다.  이 코드만으로는 number가 숫자라는 것 이상의 이야기를 할 수 없습니다.

 

public class LottoNumber {
  int value;
}

 

클래스를 사용해 int 타입의 원시값을 감싸서 표현해보았습니다. 처음에 제시한 코드보다는 명확한 의미를 전달합니다.

 

이처럼 원시값을 포장한다는 규칙은 의견이 분분하게 나뉠 수 있는 해석의 단초를 잘 꿰어주는 동시에 값을 의미적으로 사용할 수 있게 해주는 규칙임을 알 수 있습니다.

정리하기

이 규칙을 적용하다 보면 이런 생각도 들 수 있습니다. "변수명을 잘 만들어서 사용하면 포장(Wrap) 하지 않고도 의미를 분명히 할 수 있는 거 아닌가?"라고요. 네 맞습니다. 분명 변수명을 잘 짓는 것만으로 의미를 명확하게 전달할 수 있습니다. 그렇지만 이름을 정의할 수 없는 메서드의 매개 변수는 어떻게 분명한 의미를 적용해 볼 수 있을까요? Document를 잘 정리하거나 주석을 작성해놓는다고 해도 사용하는 사람이 보지 않으면 별 필요가 없는 행동이 되어버립니다. 자 이제 남아있는 방법은 처음에 이야기한 포장(Wrap)하는 방법만이 남아있습니다.

 

소프트웍스 앤솔러지 - 객체지향 생활 체조 학습하기

반응형

댓글

Designed by JB FACTORY