코드 리뷰에서 다음의 피드백을 받았다.

구체적으로 확인해 보니 Connect 버튼 하나의 흐름이 패키지 2곳, 프로세스 3개, 레이어 4개에 걸친 파일 12개를 지나고 있었다. 그러다 보니 주소 문자열을 만드는 함수가 세 곳에 따로 있었고, IPC 채널 이름은 문자열로 여러 파일에 흩어져 있었다. 또한 "connection"이라는 말도 저장된 접속 정보, 현재 접속, DB 세션이라는 세 가지 뜻으로 섞여 쓰였기 때문에 처음보는 사람은 충분히 헷갈릴만하다.
직접적인 원인은 디렉터리를 도메인이 아니라 기술 기준(패키지·프로세스·ui/data 레이어)으로 먼저 나눈 데 있었다. 그래서 src/ 아래를 connection, database, driver 같은 도메인으로 먼저 나누고, 각 도메인 안에 model, contract.ts, ipc.*, data, ui를 두는 구조로 바꿨고 단계별로 진행한 내용은 다음과 같다.
model/로 모음contract.ts에 타입으로 정의database 도메인으로 분리session이라는 이름으로 구분한 프로세스의 코드가 여러 폴더에 흩어지게 되었으므로, 프로세스 경계는 파일 이름과 lint 규칙으로 지키도록 했다.
그리고 진행 중에 workspace 폴더에는 화면만, database 폴더에는 데이터 조회만 있다는 점을 발견했다. 폴더 이름만 도메인일 뿐 사실상 레이어로 나눈 것과 같아서, 둘을 하나로 합쳤다. 코드를 쓰기전에 먼저 구조를 잡았지만 계속 변화하는 상황에 대비하지 못해서 위의 결과가 나온 것 같다. 의식적으로 전체를 보려는 노력이 필요하다.