시간과 같은 데이터를 다룰 때, 데이터를 어떻게 표현하고 처리할지에 대한 고민은 소프트웨어 설계에서 중요한 문제입니다. 예를 들어, 시간을 표시하는 라벨에 "60분"을 출력하려고 할 때, 다음 두 가지 방식으로 데이터를 설계할 수 있습니다.
string, 값: "60분" (클라이언트에서 그대로 출력)number, 값: 60 (클라이언트에서 "분"을 붙여서 출력)개발 중 2번 방식을 선호하는 경우가 많은데, 이를 고민할 때의 개념적인 배경을 정리해보았습니다.
이 개념은 데이터를 순수한 상태로 유지하고, 그 데이터를 화면에 어떻게 표현할지에 대한 책임을 클라이언트(프론트엔드) 또는 별도의 레이어에 두는 접근 방식을 말합니다.
60은 데이터 자체로서 의미가 명확하며, "분"이라는 단위는 출력 로직에서 처리합니다.단일 책임 원칙은 데이터의 본질적 의미와 그것의 표현을 구분하는 철학과 맞닿아 있습니다. 데이터와 UI 표현 로직을 분리하면 각 부분의 유지보수가 더 쉬워지고 책임도 명확해집니다.
데이터를 저장하거나 전달할 때 사용하는 방식과 그것을 사용자에게 보여줄 때의 형식은 다를 수 있습니다.
60과 같은 원본 데이터를 전달.시간, 날짜, 금액 등과 같은 데이터를 문자열로 고정하면 다른 언어권이나 지역 설정에서 변경이 어렵습니다. 숫자로 데이터를 저장하고 표현은 별도의 로직에서 처리하면 다양한 언어와 단위를 쉽게 지원할 수 있습니다.
2번 방식을 선호하는 이유는 데이터의 유의미성과 유연성을 높이기 위해서입니다.
이러한 고민은 "데이터 표현과 추상화의 설계" 또는 "데이터와 표현의 분리" 문제로 정의할 수 있습니다. 데이터를 본질적으로 의미 있는 형태로 설계하고, 표현은 클라이언트 또는 별도의 로직에 맡기는 방식이 더 유연하고 확장성 있는 설계를 가능하게 합니다.