📝가독성을 고려한 코드

10_2pang·2023년 6월 4일
0

⚽️트러블슈팅

목록 보기
13/94
post-thumbnail

👨‍💻 사건


  • 우테코 프리코스 문제 중, 한 함수에 모든 것을 다 구현을 해보았는데, 페어프로그래밍을 하는 것에 있어 상대방이 이해를 하는부분에 있어 어려움이 생겼다.
    • 각 변수 혹은 함수의 이름이 명확하지 않고, 파악하기 힘든 구조로 코드를 구현하였다.

✅ 해결


처음에는 한 함수에 최대한 빠르게 코드를 구현 → 자주 사용하거나, 이해하기 어려운 파트를 묶어서 밖으로 옮긴후, 함수를 사용하여 정리 → 세부적인 네이밍 교체

예시)

function problem1(pobi, crong) {
    var answer;

    const [lPobi, rPobi] = pobi;
    const [lCrong, rCrong] = crong;

    if (rPobi - lPobi !== 1 || rCrong - lCrong !== 1) return -1;

    const pobiMax = Math.max(
        maxNum(eachNumber(lPobi)),
        maxNum(eachNumber(rPobi))
    );

    const crongMax = Math.max(
        maxNum(eachNumber(lCrong)),
        maxNum(eachNumber(rCrong))
    );

    if (pobiMax === crongMax) {
        answer = 0;
    } else if (pobiMax > crongMax) {
        answer = 1;
    } else {
        answer = 2;
    }

    return answer;
}

function maxNum(numList) {
    const sumValue = sumValueOfList(numList);
    const multiValue = multipleValueOfList(numList);

    return sumValue >= multiValue ? sumValue : multiValue;
}

function sumValueOfList(numList) {
    const sumValue = 0;
    return numList.reduce((a, b) => a + b, sumValue);
}

function multipleValueOfList(numList) {
    const multiValue = 1;
    return numList.reduce((a, b) => a * b, multiValue);
}

function eachNumber(num) {
    const list = [];
    while (num >= 10) {
        list.push(num % 10);
        num = Math.floor(num / 10);
    }
    list.push(num);
    return list;
}

💭 개선


  • 다른 사람들이 코드를 읽었을때를 고려하여 네이밍을 작성하여야 한다.
profile
주니어 프론트엔드 개발자 이광렬 입니다 🌸

0개의 댓글