본문 바로가기
lean/주간 회고

23.10.08~23.10.15

by mattew4483 2023. 10. 16.
728x90
반응형

업무

1. 온보딩 요소 제어 로직 작성

사용자가 입력한 온보딩 관련 데이터를 생성 및 제어하는 기능을 개발했다.

 

1) 특정 요소 생성 모듈 작성

처음에는 각 컴포넌트 요소(툴팁 등)들을 builder 패턴을 사용해 작성했었다.

왜? → 해당 요소를 생성하기 위한 단계가 나뉘어 있었기 때문에(루트 element 생성, 스타일 적용, 이벤트 적용 등),

각 단계를 사용처에서 호출해 객체를 생성할 수 있도록 의도했기 때문!

코드의 직관성을 높이고, 전체 데이터 인터페이스에 의존하는 게 아니라 각 단계에서 필요한 값을 주입받길 원했다.

 

그런데 점차 개발을 하다보니, 각 요소를 생성하는 시점은 크게 단계가 나뉠 이유가 없어 보였다.

+ 어차피 모든 단계에서 해당 데이터 인터페이스 전체가 필요해, 오히려 특정 값만 받는 것이 유지보수에 불리하다 판단!

전역적으로 사용되는 DTO 인터페이스를 입력받은 후, 생성된 객체를 반환할 수 있도록 수정했다.

 

2) Facade 패턴을 통한 요소 생성 모듈 제공

개발이 진행되면서 중요한 건 각 컴포넌트 요소들이 어떻게 생성되는지가 아니라(변경 여지 적음),

해당 요소들을 생성할 수단을 어떻게 제공하느냐 란 생각이 들었다.

 

각 컴포넌트 요소 타입을 통해 해당 컴포넌트를 얻어올 수 있어야 하는데...

호출하는 쪽에서 각 요소의 구체적인 구현을 알 필요는 없다고 생각!

Facade패턴을 통해 요소 타입 구분자를 입력받아, 해당 요소를 반환하는 모듈을 작성했다.

(nest js에서는 이를 service란 개념으로 제공 중이었어서, 해당 prefix를 따랐다)

export class ComponentElementService implements ElementService {
  tooltipBuilder: ElementBuilder;
  modalBuilder: ElementBuilder;

  constructor(tooltipBuilder: ElementBuilder, modalBuilder: ElementBuilder) {
    this.tooltipBuilder = tooltipBuilder;
    this.modalBuilder = modalBuilder;
  }

  /**
   *
   * @param type element 종류 구분자
   * @param component Component 인터페이스
   * @returns type에 해당하는 HTMLElement
   */
  getElement(type: string, component: UserComponentDto): HTMLElement {
    switch (type) {
      case 'tool-tip':
        return this.tooltipBuilder.get(component);

      case 'modal':
        return this.modalBuilder.get(component);

      default:
        throw new Error('올바르지 않은 컴포넌트 타입');
    }
  }
}

이때 주입받는 builder와는 interface 통한 느슨한 결합이 이뤄질 수 있도록 작성했다.

 

3) action 제어 로직 및 모듈 작성

대망의...

모달 등에서 선택 액션을 통해 각기 다른 분기가 이뤄져야 하는 요구사항이 추가되었다.

기존 방식에서는 단순히 요소 배열을 통해 순서를 찾아갔는데... 이 방법이 불가능 한 상황.

 

끙끙거리며 DB 설계를 한 결과, 컴포넌트 별 action이라는 table을 만들어

각 컴포넌트들이 자신의 다음 컴포넌트가 누구인지 를 알 수 있도록 수정했다.

간만에 본 트리

각 컴포넌트 요소들을 tree의 node 개념으로 변경!

이전 action 제어는 사용자가 발생한 step의 변화에 따라 진행되었는데,

이를 각 node의 자식 node를 찾아가는 로직으로 변경하였다.

 

회고

개발하는 게 참 재미있다.

딱히 재미가 없거나 슬럼프가 찾아온 순간은 (아직은) 없었는데...

요즘은 특히 재미있다는 생각을 한다.

 

특히 퇴근 후 집에서 개인 프로젝트를 하고 있으면...

시간 가는 줄 모르고 빠져들 게 된다.

 

새로운 개념들과 지식들을 실제로 적용해 보려 많이 노력하는데

이 덕분에 매일 두근거리는 발견을 하는 듯한 기분.

 

당장 눈 앞에 겪은 문제가 해결됨과 동시에

'아..! 그 때 이랬으면 좋았을 텐데!' 하는 기분 좋은 아쉬움을 느끼고 있다.

 

결국 개발자는, 나아가지 않으면 안되나 보다.

 

728x90
반응형

'lean > 주간 회고' 카테고리의 다른 글

23.10.22~23.10.29  (0) 2023.10.29
23.10.15~23.10.22  (2) 2023.10.22
23.10.01~23.10.08  (0) 2023.10.08
23.09.17~23.09.24  (0) 2023.09.24
23.09.10~23.09.17  (0) 2023.09.17