Today I Learned

날짜

2023년 11월 20일 월요일

내용

조그만 QA에 관련된 Task를 맡기 위한 기초 공부에 시작했다!

UML

모델 만들때 쓰는 표준언어

클래스 다이어그램

  • UML은 14개의 다이어그램이 있다.
  • 클래스 다이어그램은 클래스 내부의 정적인 내용이나 클래스 사이의 관계를 표기.
  • 개념 차원 : 문제 도메인의 구조를 나타내며, 사람이 풀고자 하는 문제의 구조와 개념 기술
  • 명세와 구현 차원 : 소프트웨어 설계 등을 위해, 소스코드와 깊은 연관
클래스

클래스의 이름, 속성, 기능 등 표기

스테레오 타입

추가적인 확장요소

추상 클래스/메서드

1개 이상의 메서드가 구현체가 없고 명세만 존재하는 클래스

클래스간의 관계
  • 일반화 : 부모와 자식 클래스간의 상속 관계. 구체화와 반대. 서브(자식)가 주체면 일반화, 반대에선 슈퍼가 서브를 구체화
  • 실체화 : interface의 spec(명세, 정의)만 있는 메서드를 구현
  • 의존성 : 어떤 클래스가 다른 클래스를 참조
  • 연관 : 다른 객체의 참조를 가지는 필드
  • 집합 : 전체(whole)와 부분(part)의 관계를 나타냄
  • 합성 : 집합과 비슷하지만 집합보다 더 강한 집합

시퀀스 다이어그램

특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는지 표현하는 행위 다이어그램. 팀원간 의사소통에서 불필요한 오해를 줄일 수 있다.

템플릿 메서드

  • 부모 클래스에서 알고리즘의 골격을 정의하지만, 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드(재정의)할 수 있도록 함.
  • 템플릿 메서드는 행동패턴에 관한 것이다. 예를 들어, A를 하고 B를 하고 C를 하고 D를 하는 일련의 코드가 반복되면 템플릿 메서드로 만든다. 누군 C가 조금 다르고 , 누군 하나가 빠진다면 그때마다 오버라이드(재정의)
  • 기존 코드의 변경 없이(전체 알고리즘을 수정하지 않고) 약간의 변형을 줄 수 있다.

팩토리 메서드

  • 부모 클래스에서 객체를 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체의 유형을 변경할 수 있도록 합니다.
  • 팩토리 메서드는 생성패턴에 관한 것이다. 자식 클래스가 어떤 객체를 생성할지를 결정하도록 한다.
  • 배송에 관해서 부모 클래스를 만들어 두고 추상메서드로 운전이 있다고 가정해보자. 트럭으로 할지, 기차로 할지 나중에 결정할 수 있다. 이후 항공을 추가하려면 기존의 배송 에 관한 코드는 건드리지 않고 추가하면 된다. 또, 그때마다 내부의 추상메서드를 따로 구현할 수도 있다. 트럭은 기어(스틱)와 관련된 로직을 추가하고 배는 배를 운전할때만의 특징을 로직을 추가하면 되는 것!
  • 기존 코드의 변경 없이 새롭게 확장이 가능해진다.

어댑터

  • 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴
  • 기존 클래스를 사용하고 싶지만 그 인터페이스가 나머지 코드와 호환되지 않을 때 사용

온보딩

  • 기존 미완성된 부분을 완성하였다.
  • 프론트에서 Todo의 모델을 설정하고, Todo 리스트를 나타내기 위한 Mattable의 Datasource 형식을 지정해주었다. constructor 내에서 초기화도 알맞게 진행해서 각 status 별로 적절한 데이타를 지정해주었다.
  • Matsort 모듈을 이용해 각 테이블별로 due_date 별로 정렬하는 기능을 추가했다.
  • Todo의 status를 바꾸꺼나 삭제한 후 subscribe 내에서 다시 todo 리스트를 불러오니 페이지를 reload 할 필요 없이 알아서 갱신되었다.
  • 기존 새로운 URL로 이동하던 생성 및 업데이트 기능을 모달창이 나타나도록 변경하였다.
  • 상세보기의 경우 query로 todo의 정보를 넘겨 URL이 비정상적으로 길었고 데이터를 부적절하게 관리하였는데, 모델을 설정한 덕에 data를 param에 담아 잘 옮길 수 있었다.
  • 기존 todo 리스트를 불러올 때, DB에 2번 접근하여 각각 status에 맞는 데이터들을 탐색하였다. 이를 한번만 접근하여 user의 id를 기준으로 탐색한 후 이를 status에 따라 나누어 반환하도록 하여 DB 접근 횟수를 줄였다.

회고

첫 테스크라니!!!!!!