Skip to content

Latest commit

 

History

History
47 lines (42 loc) · 2.89 KB

사전과제.md

File metadata and controls

47 lines (42 loc) · 2.89 KB
  1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 코드블락을 사용해 올려주세요 최근 개인코드 중에는 생각나는게 없네요 ㅠ
  2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요 목적이나 관심사에 따라 함수나 로직의 정의를 계층( Layered ) 하게 나누는 아키텍처를 말합니다. 저는 이 계층을 나눌때 가장 중요한 것은 같은 레이어에서는 로직이 서로를 간섭,의존이 생기는 것을 피하고 해당 레이어의 컨셉을 벗어나지 않는 것이 중요하다고 생각합니다. 아주 단편적으로 예를 들면, 여러 로직이나 함수가 있는데, 그것이 하나의 폴더에 다 들어가 있다고 하면, 유지보수하기 힘들 것 같네요. ( 적절한지 모르겠네요 ㅎㅎ )
  3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요. 의존성 주입이란 쉽게 말해 파라매터 전달을 통한 독립된 객체의 행위를 넘겨주어 사용하는 것을 말합니다. 저는 이 의존성 주입이 필요한 이유는 목적에 따라 모듈을 분리함으로써, 결합도를 낮추고 응집도를 올리는데 필요한 부분이라고 생각합니다. 실생활에서 지켜지지 않았을 때 문제가 되는 것을 예를 들어, 하나의 함수를 고치는데 그 함수가 너무 여러기능을 하기 때문에 다른 기능들에게도 영향이 가는것을 줄일 수 있습니다.
  4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요 저는 JavaScript를 많이 사용하는데, 이쪽에서 사용하는 map, filter, reduce 등이 있습니다.
  5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)
type SomeFunctionReturnString = () => string

function delay(f: SomeFunctionReturnString, seconds: number): Promise<string> {
    return new Promise((resolve,reject) => {
        setTimeout(()=> {
            try{
                resolve(f());
            }catch(error){
                let message = 'unknown error';
                if (error instanceof Error) message = `${error.name}: ${error.message}`;
                if (error instanceof Object) message = error.toString();
                reject(message);
            }
        }, seconds * 1000);
    });
};

const success = () => {
  return "successfully done";
};

const fail = () => {
  throw new Error("failed");
};

delay(success, 2)
  .then((res) => console.log(res))
  .catch((e) => console.log(e));

delay(fail, 2)
  .then((res) => console.log(res))
  .catch((e) => console.log(e));
  1. 강의를 통해서 기대하는 바, 또는 얻고 싶은 팁을 적어주세요 Nest를 좀 잘하고 싶고요. 백엔드 아키텍쳐 라는 개념을 좀 더 잘 배우고 싶습니다.