의미가 완벽하게 같다면 응답 필드 이름도 같게하자
의미가 같다면 응답 필드 이름도 같도록 하자! - 나를 위해서 모두를 위해서
같은 필드이고 그 의미가 다른 곳에서도 똑같이 적용되는 경우라면 왠만하면 통일되게 이름을 가져가는 것이 좋다고 생각이 든다.
이냥저냥 토이프로젝트에서는 개별 고양이 컨텐츠를 상세 조회하거나 리스트 형태로 볼 수 있는 기능이 있다.
그리고 나의 고양이 댓글 조회 항목에서도 개별 댓글 마다 고양이 이름이 들어가는 데 이떄 들어가는 고양이 이름은 컨텐츠에 들어가는 고양이 이름과 같도록 설계했다.
문제는 처음에 컨텐츠 조회에서 등장하는 고양이와 댓글 조회에서 등장하는 고양이이름은 완전히 의미적으로 같음에도 불구하고 기능적으로 다르기 때문에 다른 필드 이름을 적는 실수를 저지르고 말았었다..
그러나보니 나중에는 완전히 같은 뜻의 고양이 임에도 불구하고 다시 코드를 볼 때나 프론트 엔드 개발자가 다시 볼 때도 헷갈리는 문제가 생겨나고 말았다
프론트 개발자 : “같은 고양이 이름인데 왜 다른 이름을 사용했나요? 그 이유라도?… “
즉 컨텐츠 조회에서 등장하나, 댓글 조회에서 등장하나 결국 같은 의미를 가지고 있기 때문에 같은 필드 네임을 적용하는 것이 맞다. 왜냐면 이렇게 되면 추가적으로 확인해야하는 번거러운 작업이 생략될 수 있다.
아래를 보면
첫번 째 고양이 컨텐츠 리스트 응답 데이터 중 하나이고 두번 째는 댓글 리스트 조회 응답 데이터 중 하나의 댓글을 가져왔다.
첫번 째는 필드이름(catName)만 봐도 고양이의 이름이라는 것을 유추할 수 있는 반면에 두번 째는 단순히 name 이라는 값이 댓글에 있는 고양이 이름인지, 아니면 다른 의미가 있는 것이 또 한번 추측해야하거나 문서를 확인해야하는 번거러움이 생기기 마련이다.
따라서 이 경우 우측 name
필드 이름을 좌측과 같이 catName
으로 통일하는 것이 좋아보인다.
{
"catName": "바비",
"catAddress": "서울 마포구 망원동 415-31",
"catLat": 37.582425,
"catLon": 126.985818,
"catCommentCount": 0,
"catFollowerCount": 0,
"catCreatedAt": "2024-02-01T15:24:36",
"catUpdatedAt": "2024-02-01T15:24:36",
"catEmoji": 1
}
{
"name": "바비",
"commentId": 106,
"commentDesc": "이 고양이 요즘 안보임... 너무 슬퍼.. 죽었나봐... \n대신 다른 고양이가 오고있어",
"commentImageUris": [],
"createdAt": "2024-09-09T21:32:45",
"updatedAt": "2024-09-09T21:32:45",
"contentId": 153,
"commentLikeCount": 0,
"isCatCommentLiked": false
},
깨달은 점
사용되는 필드를 의미론적으로 똑같다면 같은 필드로 내려주는 것이 더 효율적일 것같다. 물론 이게 정답이라는 것은 아니다.
만약 코드상으로 다른 필드를 적용해야 한다면 Jackson 라이브러리에 있는 @JsonProperty
를 사용해서 클라이언트 응답필드만 통일시키면 되기 때문에 큰 문제가 되지 않는다고 생각한다.