그동안 나는 코드를 짤 때 당장 동작하는 기능을 만들기에 급급해 코드 퀄리티, 협업을 위한 코드와 같은 부분에는 신경쓰지 못했다.
하지만 부트캠프에서 여러 팀원들과 협업을 하게 된 만큼 좋은 코드 작성법에 대해 알아보고 프로젝트에서 최대한 활용해보고자 한다 !
좋은 코드란 무엇일까?
보통은 가독성이 좋아 이해하기 쉽고, 변경이 쉬우며, 재사용하기 쉽고, 효율적인 코드라고 말한다.
서비스를 개발함에 있어서 유지보수는 필수적으로 따라오기 때문에 더욱이 변경이 용이한 코드를 짜는 것이 중요하다.
좋은 코드를 작성하기 위한 기준에는 응집도와 결합도의 두 가지 기준이 있다.
잘 작성된 서비스는 응집도가 높고, 결합도가 낮다.
즉, 각 모듈들이 유사한 작업을 하는 코드들로 구성되어 있고, 모듈들 간의 의존성이 낮다는 것.
연관된 코드들이 얼마나 잘 모여있는가를 의미. 모듈 내부 요소들 간 연관 정도를 나타내는 척도이다.
→ 높은 응집도를 가진 객체는 각자의 책임들이 조화를 잘 이루고 있으며 과도한 작업을 수행하지 않는다.
낮은 응집도를 가지는 경우 - 계층형 구조
controller
ㄴ MemberController
ㄴ PostController
entity
ㄴ MemberEntity
ㄴ PostEntity
dto
ㄴ MemberDto
ㄴ PostEntity
service
ㄴ MemberService
ㄴ PostService
repository
ㄴ MemberRepository
ㄴ PostRepository
높은 응집도를 가지는 경우 - 도메인형 구조
member
ㄴ controller
ㄴ entity
ㄴ dto
ㄴ repository
ㄴ service
post
ㄴ controller
ㄴ entity
ㄴ dto
ㄴ repository
ㄴ service
프로그램 모듈 간 의존성의 정도. 모듈들이 얼마나 상호의존적인지를 측정하는 척도이다.
결합도가 높을수록 독립적인 테스트와 재사용이 어려워져 로직 이해와 수정 또한 어려워진다.
코드 작성, 프로젝트 구조, 네이밍 규칙, 코드 스타일 등을 포함하는 일련의 규칙
특히 팀 프로젝트를 진행할 때에는 팀원들 간의 코드 작성에 규칙을 정해 통일시켜 가독성을 높여야 한다.
보통 개발자에게 가장 중요시되는 스킬은 협업 능력이다. 팀 단위로 협업이 이루어지기 때문에, 내가 짠 코드를 상대방이 보고 이해할 수 있어야 하며 마찬가지로 상대방이 짠 코드도 내가 이해할 수 있어야 한다.
당연한 말을 줄줄 써놨지만..
물론 응집도와 결합도를 고려하고,, 규칙에 따라 코드를 작성하는 것도 중요하지만 !
결국엔 “좋은”코드라는 것은 주관적인 것이기에 팀이 함께 고민하고 합의하여 더 나은 코드를 만들어 가야 하는 것으로 이해했다.