20240201 (목) 개인 주특기 플러스 주차 3일차

2024. 2. 1. 20:30TIL

오늘부터는 코드 개선 과제를 수행하려고 연습용 프로젝트를 하나 만들었다.

처음 코딩했을때와 지금을 비교해보면서 얼마나 실력이 늘었을지도 궁금했고,

개인적으로 좀더 짜임새있고 이쁜 코드들을 만들어보고 싶어서 새로 만들기 시작했다.

 

이름이나 콘셉같은건 뭐로 정할까 하다가 그냥 연습용프로젝트니까 Practice 로 지었고 구성으로는 Post, Comment, User 등이 있다.

 

처음 코드를 짜다가 문득 패키지 구조에 대해서 생각을 하게 되었고, 패키지구조를 좀더 알아보았다.

 

크게 두가지로 나누면 도메인형 구조와 계층형 구조로 나뉜다.

도메인형 구조는 기존에 내가 배우던 형식의 구조이고 (Post, Comment 등 도메인에 따라 나누는 구조)

계층형 구조는 도메인에 들어가는 Controller, Service 등으로 나누는 구조이다.

 

좀더 자세하게 들어가서 장단점까지 따져보자면

 

도메인형 구조는 도메인의 흐름을 파악하기 쉽고 도메인별로 관리하기 때문에 도메인의 스펙, 기능이 변경되었을 때 변경 범위가 적다. 하지만 애플리케이션의 전반적 흐름을 파악하기가 어렵고 개발자마다 어느 패키지에 두어야할지 애매한 클래스들이 존재해서 여러명이서 작업을 할 때 예상하는 패키지와 다르면 해당 클래스를 찾기가 힘들다.

 

계층형 구조는 반대로 계층별 수정이 일어나면 하나의 패키지만 보면되고, 패키지구조만으로도 전체적인 흐름, 구조를 파악할 수 있다. 단점으로는 도메인형 구조의 장점의 반대격으로 생각하면 편하다.

단점을 더 추가하자면 규모가 커질수록 패키지의 내용물이 너무 많아져서 구분이 힘들어지는 정도?

 

즉 규모가 작으면 계층형 구조가 유리하고 규모가 커질수록 도메인형 구조가 유리한것 같다.

 

 

현재 패키지 구조


 

일단은 기본적인 CRUD 자체는 워낙 여러번 반복도 했었고 크게 걸리는 부분은 없었다.

하지만 인증/인가 회원가입 로그인/아웃 부분에서는 꽤나 헷갈렸다.

일단은 코드 개선과제부터 집중적으로 해결한 다음에 남는시간이 있다면 이부분만 다시 차근차근 익혀봐야겠다.