codecamp-{B}-1DAYS

JBoB·2023년 1월 9일
  • 읽기 쉬운건 ⇒유지보수 좋은 함수
  • API란 함수다
    • 백엔드가 주로 하는 업무
    • 데이터베이스에 함수를 저장하는 역할
  • Token = 어떤 일정한 길이의 문자열
  • NPM(노드 패키지 매니저)
  1. node.js 설치하게되면 npm도 자동설치
  2. yarn은 직접 설치 ⇒ npm install -g yarn
  • node.js 실행 순서
    • pwd (현재 폴더 확인)
    • mkdir (폴더 만들기)
    • ls (폴더 목록보기)
    • ls -al (숨김파일 포함 보기)
    • cp (copy(복사)) / cp -R (폴더 안에 있는 모든것들 복사)
    • rm (remove (제거)) / rm-rf (폴더 안에 있는 모든것들 제거)
    • cd (폴더 안으로 들어가기)
    • cd (폴더 밖으로 나가기)

Token Section 01

회원가입

스크린샷 2023-01-09 오후 4.56.35.png

  • 인증요청 API
  • 인증완료 API ⇒ DB TRUE or FALSE 구별
  • 가입하기 API ⇒ DB ⇒ 이메일 제공

스크린샷 2023-01-09 오후 4.58.50.png

  • 백엔드에서 가장 중요한 건 검증!보안!안전!
    • ex) 휴대폰 번호,인증번호가 맞는지 등등

휴대폰 인증번호 전송 만들기

//  안좋은 예
function createTokenOfPhone(qqq){ // qqq: 매개변수(parameter)
    // 1. 휴대폰 번호 자릿수 맞는지 확인하기 (10~11자리)
    if(qqq.length >= 10){
        if(qqq.length <= 11){
            // 2. 휴대폰 인증번호 6자리 생성
            const result = String(Math.floor(Math.random() * 1000000)).padStart(6, "0")
            console.log(result);
            // 3. 번호에 인증번호(토큰) 전송하기
            console.log(qqq + "번호로 인증번호 " + result + "를 전송합니다.");
        } else {
            console.log("에러 발생 !! 핸드폰 번호를 제대로 입력해주세요 !!!");
        }
    } else {
        console.log("에러 발생 !! 핸드폰 번호를 제대로 입력해주세요 !!!");
    }

    
}
// 좋은 예
function createTokenOfPhone(qqq){ // qqq: 매개변수(parameter)
    // 1. 휴대폰 번호 자릿수 맞는지 확인하기 (10~11자리)
    if(qqq.length < 10 || qqq.length > 11){
        console.log("에러 발생 !! 핸드폰 번호를 제대로 입력해주세요 !!!"); // early-exit 
        return
    }
    // 2. 휴대폰 인증번호 6자리 생성
    const result = String(Math.floor(Math.random() * 1000000)).padStart(6, "0")
    console.log(result);
    // 3. 번호에 인증번호(토큰) 전송하기
    console.log(qqq + "번호로 인증번호 " + result + "를 전송합니다.");

    
}
  • if구문 사용시 긍정문보단 부정문부터 써줘야 읽기 쉬운 함수가 완성된다.

스크린샷 2023-01-09 오후 5.28.41.png

  • 리팩토링(refactoring)은 소프트웨어 공학에서 '결과의 변경 없이 코드의 구조를 재조정함
    '을 뜻한다. 주로 가독성을 높이고 유지보수를 편하게 한다. 버그를 없애거나 새로운 기능을 추가하는 행위는 아니다.

퍼사드 패턴

스크린샷 2023-01-09 오후 5.32.16.png

스크린샷 2023-01-09 오후 5.32.31.png

스크린샷 2023-01-09 오후 5.32.46.png

  • 퍼사드 패턴은 라이브러리에 대한, 프레임워크에 대한 또는 다른 클래스들의 복잡한 집합에 대한 단순화된 인터페이스를 제공하는 구조적 디자인 패턴

휴대폰 인증번호 전송 만들기(피사트 패턴)

function checkPhone(myphone){
    if(myphone.length < 10 || myphone.length > 11){
        console.log("에러 발생 !! 핸드폰 번호를 제대로 입력해주세요 !!!"); // early-exit 
        return false
    } else {
        return true
    }
}

function getToken(){
    const result = String(Math.floor(Math.random() * 1000000)).padStart(6, "0")
    console.log(result);
    return result
}

function sendTokenToSMS(myphone, result){
    console.log(myphone + "번호로 인증번호 " + result + "를 전송합니다.");

}

function createTokenOfPhone(myphone){ // myphone: 매개변수(parameter)
   // 1. 휴대폰 번호 자릿수 맞는지 확인하기 (10~11자리)
    const isValid = checkPhone(myphone)
    if(isValid ===  false){
        return
    }

   // 2. 휴대폰 인증번호 6자리 생성
    const mytoken = getToken()

   // 3. 번호에 인증번호(토큰) 전송하기
    sendTokenToSMS(myphone, mytoken)

    
}

createTokenOfPhone("01012345678") // 0101234567: 인자(argument)
  • 위와 같이 건물 외관안에 꾸며주는 언어들로 더 유지보수가 쉽게 해놔서
    만약 다른 실무자가 수정을 하더라도 건물외관쪽만 수정하면 되기 때문에 퍼사드패턴을 지향한다.
profile
간절하고 치열하게 살자

0개의 댓글