Golang에서 같은 패키지에 여러 도메인 객체를 넣으면 안 되는 이유

2020-03-26

Go 는 순환참조에 대해 매우 민감하다. 컴파일조차 되지 않는다.

그게 불편해서 프로젝트의 도메인을 모두 한 곳에 집어넣는 경우가 있는데, 해 보니 다음과 같은 문제가 있었다.

  1. 네임스페이스가 겹쳐서 이름 짓기가 이상해진다 - 프로그래밍 레벨에서 이벤트를 쓰고, 행사라는 의미로 이벤트를 쓰면 둘 중 하나는 바꿔야 한다. 핸들러에서 메소드 이름으로 도메인 객체를 구분해야 하므로 매우 길어진다. create면 될 것을 createApplicationEvent 가 되는 식.

  2. 코드 복붙할 때 문제가 생긴다 - 자동 코드 생성기를 쓰든, 직접 복붙을 하든 1과 관련되어 패키지 이름이 겹치는 경우가 생기고, IDE의 리팩토링 툴을 쓰기도 곤란해진다. 복붙하다가 하나 고치는 걸 빼먹었다면? 마침 테스트 코드도 복붙하면서 안 고쳤다면? 끔찍하다.

Vue에서 form 조건부 validation CLI로 클라우드 와치 로그 보기