코드의 가독성을 늘리기 위한 API 컨벤션

권태형·2023년 3월 3일
0

지식정리

목록 보기
13/72
post-thumbnail

개인 프로젝트가 아닌 팀에서 주도하는 협업 프로젝트에서 각자의 개성에 맞게 코드를 작성하면 가독성이 떨어지고 내 코드는 내가 알아보고 남의 코드느 남만 알아보는 사태가 발생할 수 있다.

코드자체의 부분이 나의 담당이 아니더라도 한 팀에서 제작한 프로젝트는 일관성을 가지는게 좋으며 모두가 읽기 쉽고 이해할 수 있도록 작성하게 좋다.

따라서 팀을 이루어서 프로젝트를 진행하게 된다면, 그 팀의 규칙(ground rule)을 정하고 API작성 code 또한 규칙에 맞게 작성하는게 옳은 판단이다.

API컨벤션 URI네이밍

한 팀이 작성한 코드가 한 사람이 작성한 것 처럼 보일 수 있도록 규칙에 맞게 작성해 주는게 좋다면, 그에 따른 대중적으로 사용하는 컨벤션이 존재할 것이다. 일반적으로 URI네이밍에 있어서 사용하게 되는 컨벤션의 규칙에 대해 알아보자

1. 명사의 사용

보통 API의 CRUD를 작성하는데 있어서 URI에 동사나 형용사 보단 명사를 사용한다.

동사를 사용하게 된다면, 같은 테이블 및 데이터에 대한 동작도 난잡하고 일관성이 없어진다.

router.get(/getUsers)
router.post(/createUsers)
router.update(/updateUsers)           

위와 같이 동사를 사용하였을 때 Users라는 테이블에서 회원정보들에 대한 CRUD를 작성하게 되지만, 일일히 동사를 사용하게 되어 같은 리소스에 대한 정보인데도 URI의 네이밍이 달라진다. 명사를 사용하게 되면 아래와 같이 깔끔하고 일관성있게 표현된다

router.get(/users)
router.post(/users)
router.update(/users)           

2. 소문자의 사용

일반적으로 URI경로를 네이밍 지을 때 소문자를 우선적으로 사용한다. 사실 대문자와 소문자 중 어느 것을 사용하여도 상관없으나, 하나로 통일할 필요성은 존재한다. 윈도우 운영체제라면 디렉토리나 파일이름에서 대소문자를 구분짓지 않으나, 리눅스 및 유닉스 계열의 서버는 대소문자를 구분지어 판단한다.

따라서 한 가지의 종류로 통일하게 되는데 매번 URI의 작성때는 대문자만 쓰다가 코드를 작성할 때 소문자로 넘오는 개발자의 개발 코스트의 소모가 발생할 수 있어, 소문자로 통일하는게 더 올바를 것이라 판단된다.

3. 복수명사 사용의 권장

이 또한 위의 대소문자와 같이 어느 것을 사용하든 문제는 따로 없지만 하나의 통일은 중요하다. 다만 우리가 데이터베이스에서 데이터를 요청하는 CRUD의 작업을 하게 된다면 데이터베이스에 존재하는 데이터덩어리 즉 데이터조각들에서 일부 데이터를 가져오거나 전부를 가져오는 작업을 취하게 된다.

따라서 조각들을 처음에 요청하는 작업에서 시작이기 때문에 복수명사를 사용하게 되는 것이 아닐까 추측한다.

URI의 네이밍에 단수, 복수 중 어느 것을 사용해도 무방하나, 하나로 통일성있게 작성되지 않는 다면, 매번 그 작업에 대한 다른 작업을 할 때 일일이 확인하거나 실수를 유발할 수 있기 때문에 한 가지로 통일해서 작성하도록 하자.

4. QueryString를 사용

/로 구분지어 API를 작성한다면 새로운 API를 하나 더 만들게 되는 것이다. 이는 같은 중복의 코드가 많아지고 동일 테이블에 대한 API를 여러개 가지게 된다. 이런 부분을 /로 구분짓는게 아닌 ?name=value의 쿼리형식을 통해API를 통일키셔 작성하면 개발 코스트를 줄이고 가독성 높은 코드를 작성할 수 있을 것이다.

5. 하이푼(-)의 사용

URI를 쉽게 읽고 해석하기 위해, 불가피하게 긴 URI 경로를 사용하게 된다면 하이푼(-)을 사용해 가독성을 높일 수 있다. 언더바(_)는보기 어렵거나 밑줄 때문에 문자가 가려지는 가독성 문제가 발생할 수있다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글