---
# System prepended metadata

title: 서울숲_M_Day06 리뷰 레포트

---

<h1>서울숲_M_Day06 리뷰 레포트</h1>

<h3>참석자</h3>

- 정예원, 이창권, 서준배, 정태용

<h2>1. 코드 동작 이해</h2>

- 스켈레톤 작성
    - 뼈대가 되는 함수와 인자들을 작성
    - 테스트 케이스에 대해서 실행시 함수 용도를 알 수 있을정도로 콘솔에 표시하도록 작성.
    - 실행으로 알 수 없는 부분들에 대해서는 주석으로 설명하는 것도 좋다
- 데이터 형식의 정의
    - 데이터의 용도와 구현해야하는 함수에 따라 자료구조를 구성한다


<h2>2. 코드 동작 개선</h2>

- 2초 딜레이 출력
    - 동기방식으로 출력돼야 함
    - 커스텀 sleep 구현으로 2초딜레이 생성
    - setTimeout으로 2초딜레이 생성
        - promise로 딜레이 구현 가능
        - 콜백 함수를 통해 동기화


- uniqueID생성
    - 중복 없는 id
    - 0부터 시작 1씩 증가하면서 ID생성
    - random으로 무작위 숫자 생성
        - 더욱 완벽한 uniqueID를 위해서는 id의 중복, 삭제 작업을 관리하는 함수 제작 필요


- prompt를 이용해 콘솔에 출력하여 개선 가능

- 스스로 확인할 사항
    - 충분히 디자인 과정을 했는가? 디자인이후 개발을 하면서 다시 잘못된 디자인을 수정했는가?
        - 개발 과정에서 디자인에서 예상하지 못한 함수가 추가된 경우가 발생 했었다.
        - 프로그램의 성능과 효율성에 따라 data의 자료구조 설계
    - 프로그램이 버그 없이 잘 동작하는가?
        - prompt가 아닌 write를 사용해 출력된문자가 백스페이스시 삭제 됨.
        - 0부터 시작 1씩 증가하면서 ID생성시, 초기데이터의 ID값이 중복되는 문제를 해결해야함

<h2>3. Consideration</h2>

- 상태관리를 mutable 과 immutable 방식 중 어떤 것을 선택했는가? 이중 무엇이 왜 더 좋을까?
    - 외부의 간섭에서 상태 변화를 막기위해 immutable방식으로 선택해야 한다.
    - immutable이어서 발생하는 버그를 수정하기위해`Object.assign`,`Object.freeze` 등을 통해 패턴을 지키면서 구현 
    - 하지만 단점으로 삭제나 수정시 immutable일경우 메모리 낭비가 발생한다.
 
- 함수만으로 구현하는데 어떤 장점과 단점이 존재하는가 ?
    - 여러곳에 중복으로 사용되었을때, 수정이 편함.
    - 프로토타입 체인과 클로저 등으로 객체 지향 언어의 상속, 캡슐화(정보 은닉) 등의 개념을 구현할 수가 없는 단점이 있다.
    - 프로토타입이나 클래스 사용 시, 객체의 안정성을 보장할 수 있다. 하지만 함수만으로 구현 시 그렇지 않으므로, Immutable이나 순수함수와 같은 함수형 프로그래밍의 규칙에 따라 구현해야 객체의 안정성을 보장할 수 있다.
