Cracking the Coding Interview - 8

2024-06-10

  • Algorithm
  • CS
  • Data Structures

깨끗하고 효율적인 코드를 작성하는 것은 매우 중요합니다. 이를 위해 적절한 코드의 재사용, 모듈화, 유연한 코드 작성, 그리고 철저한 오류 검사가 필요합니다. 이번 글에서는 이러한 개념을 예시와 함께 살펴보겠습니다.

적절한 코드의 재사용

코드 재사용은 중복을 줄이고 유지 보수성을 높이는 데 도움이 됩니다. 예를 들어, 배열에서 중복된 요소를 제거하는 함수를 생각해봅시다.

function removeDuplicates(arr) {
    return [...new Set(arr)];
}

let numbers = [1, 2, 2, 3, 4, 4, 5];
console.log(removeDuplicates(numbers));  // 출력: [1, 2, 3, 4, 5]

위 함수는 Set 객체를 이용하여 배열의 중복을 제거합니다. 이 함수를 여러 곳에서 재사용함으로써 중복 코드를 줄일 수 있습니다.

모듈화

모듈화는 코드를 기능별로 분리하여 독립적인 단위로 만드는 과정입니다. 이를 통해 코드의 가독성과 유지 보수성이 향상됩니다. 예를 들어, 배열 관련 유틸리티 함수를 모듈화할 수 있습니다.

// arrayUtils.js
export function removeDuplicates(arr) {
    return [...new Set(arr)];
}

export function findMax(arr) {
    return Math.max(...arr);
}

// main.js
import { removeDuplicates, findMax } from './arrayUtils.js';

let numbers = [1, 2, 2, 3, 4, 4, 5];
console.log(removeDuplicates(numbers));  // 출력: [1, 2, 3, 4, 5]
console.log(findMax(numbers));  // 출력: 5

이와 같이 코드를 모듈화하면 필요할 때마다 해당 기능을 쉽게 가져와 사용할 수 있습니다.

유연한 코드

유연한 코드는 다양한 상황에서도 잘 동작하며, 재사용성과 확장성이 뛰어납니다. 예를 들어, 배열을 정렬하는 함수를 작성할 때, 정렬 기준을 파라미터로 받을 수 있습니다.

function sortArray(arr, compareFunction) {
    return arr.sort(compareFunction);
}

let numbers = [5, 3, 8, 1, 2];
console.log(sortArray(numbers, (a, b) => a - b));  // 오름차순 정렬: [1, 2, 3, 5, 8]
console.log(sortArray(numbers, (a, b) => b - a));  // 내림차순 정렬: [8, 5, 3, 2, 1]

이와 같이 유연한 코드를 작성하면 다양한 요구사항을 쉽게 충족할 수 있습니다.

오류 검사

철저한 오류 검사는 프로그램의 안정성을 높이는 데 중요합니다. 입력 값의 유효성을 검사하고, 예외 상황에 대해 적절히 대응해야 합니다.

function divide(a, b) {
    if (typeof a !== 'number' || typeof b !== 'number') {
        throw new Error('Both arguments must be numbers');
    }
    if (b === 0) {
        throw new Error('Division by zero is not allowed');
    }
    return a / b;
}

try {
    console.log(divide(10, 2));  // 출력: 5
    console.log(divide(10, 0));  // 오류 발생: Division by zero is not allowed
} catch (error) {
    console.error(error.message);
}

이와 같이 오류 검사를 철저히 하면 예외 상황에 대한 처리가 용이해지고, 프로그램의 신뢰성이 높아집니다.

결론

적절한 코드의 재사용, 모듈화, 유연한 코드 작성, 그리고 철저한 오류 검사는 깨끗하고 유지 보수 가능한 코드를 작성하는 데 중요한 요소입니다.

Cracking t...

Cracking t...