[TIL]2023-02-08

민석·2023년 2월 8일
0

TIL

목록 보기
74/87

Fact (사실)

  • 객체지향의 사실과 오해 6장 스터디
  • 3초뒤 a+b를 return 하는 함수 만들기

Feeling (느낌)

객체지향의 사실과 오해 6장 스터디

오늘은 6장 스터디를 했습니다 6장에서 소프트웨어는 변경이 자주 일어나기 때문에 변경을 예측하는 것이 아닌 수용할 수 있는 선택의 여지를 설계에 마련해야 한다고 되어있었습니다. 그 설계를 마련하기 위해서는 구조 측면의 설계를 해야 하는데 사용자들이 이해하고 있는 도메인 구조와 최대한 유사하게 코드를 구조화할 수 있기 때문에 도메인, 도메인 모델을 이용하여 설명한 거 같습니다.

평소에 도메인이라고 한다면 도메인 주소만 생각했었는데 생각보다 포괄적인 의미의 단어였고 도메인 모델은 도메인을 단순화하여 구조한 것인데 이렇게 함으로써 사용자가 도메인을 바라보는 관점을 반영해 소프트웨어를 설계할 수 있다는 것을 알게 되었습니다.
도메인의 지식이 부족하여 이해하는데 시간이 꽤 걸린 거 같습니다. 도메인 모델을 만들어보며 코드로 구현하는 것도 해보면 좋을 거 같네요

3초뒤 a+b를 return 하는 함수 만들기

면접 때 받았던 문제를 풀지 못해서 오늘 피드백을 구했었는데 promise를 활용해 봐라는 답변을 얻어 다시 한번 풀어봤습니다.
promise를 활용하여 3초 뒤에 a+b를 하는 성공 결과를 return 한 뒤 사용하는 쪽에서는 add 함수에 1+2를 넣고 비동기 처리를 then을 사용하여 3초 뒤 결과를 console을 찍었는데 이 코드가 면접관님이 원했던 답변인지는 잘 모르겠지만 평소에 promise 자체를 사용해 본 경험이 거의 없었는데 이번 기회에 promise 공부를 할 수 있었고 푸는 동안 재밌었습니다

const add = async (a,b) => {
    const calculate = await new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(a+b)
        }, 3000);
    })

    return calculate
}


add(1,2).then((result) => {
    console.log(result)
})

// 추가 개선
// 굳이 async awit을 사용할 필요가없다 그대로 return 하게끔
const add = (a,b) => new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve(a+b)
        }, 3000);
    })

add(1,2).then((result) => {
    console.log(result)
})

Finding (교훈)

객체지향 사실과 오해 스터디를 해보며 예제 코드가 없고 설명만 주로 하기 때문에 어떻게 코드에 적용할 수 있는지 아직 감이 안 옵니다. 코드로 작성해 보며 해봐야겠네요!

profile
안녕하세요 프론트엔드 개발자 양민석입니다.

0개의 댓글