DevHvun

유연한 사고, 단순하지 않기

어느 날 개발자는 항상 모든 일에 생각을 해야 한다는 말을 들었다.

코드 한 줄을 짤 때에도 단순하게 ‘이렇게 하면 되겠지?’ 하고 바로 완성하는 게 아니라 어떻게 해야 더 간단하고 가독성이 높은 코드로 완성할 수 있을까에 대한 생각을 해야 한다.

다른 주니어 개발자들은 어떤지 모르겠지만 나는 단순하게 코드를 완성하고 잘 작동이 되면 더 이상 신경을 쓰지 않았다.
처음에는 에러만 안 나면 상관없겠지라는 생각이었지만, 점점 코드가 많아지면 많아질수록 가독성이나 효율적인 부분에서 떨어지게 된다는 것을 알았다.

길다고 다 좋은 건 아니다

처음 코드를 공부할 때 알고리즘에 흥미를 느껴서 매일 2–3문제씩 도전해 본 적이 있다.

조금 어려운 문제를 해결할 때에는 코드가 좀 길게 완성될 때가 있었는데, 당시에는 테스트를 통과하는 목적만 달성되면 된다라고 생각하고 단순하게 테스트 통과만 신경을 썼었다.

다른 사람들의 문제풀이를 볼 수 있어서 살짝 구경해 볼까 하고 들어가 봤는데 신선한 충격을 받았다.
1시간 동안 머리 쥐어짜서 10줄 넘게 작성되어 있는 내 코드를 보다가 4줄도 안되는 코드를 봤을 때의 기분이란..

프로젝트에 실제 사용되는 코드랑 알고리즘이랑은 연관되어 있는 듯 없는 듯 아직 내가 판단하기에는 애매하기 때문에 좋은 예시라고 할 수는 없다.
(그래도 공감..해줘)

항상 일정 부분 개발을 완료하거나 이슈사항이 생기면 대표님과 함께 동료검토를 한다.
그러면서 코드 리뷰도 하는 경우도 있는데 한번은 if ~ else 문이 범벅이거나 계속 코드를 나열해가면서 데이터를 필터링하는 내 코드를 for 문으로 간략하게 리팩토링을 해주셨다.

수정 전 예시

function processData(data) {
    let result = '';
    if (data === 'A') {
        result = 'Apple';
    } else if (data === 'B') {
        result = 'Banana';
    } else if (data === 'C') {
        result = 'Cherry';
    } else if (data === 'D') {
        result = 'Date';
    } else if (data === 'E') {
        result = 'Elderberry';
    } else {
        result = 'Unknown';
    }
    return result;
}

수정 후 예시

// for 문을 사용한 코드
function processData(data) {
    const dataMap = {
        'A': 'Apple',
        'B': 'Banana',
        'C': 'Cherry',
        'D': 'Date',
        'E': 'Elderberry'
    };
    let result = 'Unknown';
    for (const key in dataMap) {
        if (data === key) {
            result = dataMap[key];
            break;
        }
    }
    return result;
}

확실히 가독성도 높아지고 간단해보인다.


코드는 사람에 따라서 다르게 짜일 수 있기 때문에 재밌는 것 같다.
어디선가 ‘컴퓨터가 이해할 수 있는 코드는 누구나 짤 수 있고, 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.’는 문구를 본 적이 있다.

항상 다양하게 생각하는 습관을 가져서 리팩토링뿐만 아니라 개발하는 데에 있어 좋은 프로그래머가 되고 싶다.