[rust] 러스트 코드에서 코드 냄새 제거

러스트로 작성된 코드는 가독성이 뛰어나고 안전성이 높은 특징을 가지고 있지만, 코드를 작성할 때 코드 냄새(코드의 품질을 저하시키는 요인)가 발생할 수 있습니다. 이러한 코드 냄새를 제거하려면 몇 가지 방법을 사용할 수 있습니다.

코드 냄새란 무엇인가?

코드 냄새란 프로그램의 특정 부분을 잘못 구현하거나, 기능이 중복된 부분, 복잡한 조건문, 긴 함수 등을 가리키는 용어입니다. 이러한 코드 냄새는 코드의 가독성을 떨어뜨릴 뿐만 아니라 유지보수가 어렵게 만들 수 있습니다.

코드 냄새를 제거하는 방법

1. 리팩터링

리팩터링은 코드를 재구성하여 가독성을 향상시키고 중복된 부분을 제거하는 활동입니다. 러스트에서는 rustfmt와 같은 도구를 사용하여 일관된 코드 스타일을 유지하고 가독성을 높일 수 있습니다.

예시:

// Before
fn calculate_total(items: Vec<i32>) -> i32 {
    let mut total = 0;
    for i in items.iter() {
        total = total + i;
    }
    return total;
}

// After
fn calculate_total(items: Vec<i32>) -> i32 {
    items.iter().sum()
}

2. 코드 분리

본질적으로 긴 함수나 복잡한 조건문은 작은 단위의 함수로 분리함으로써 코드를 더욱 명확하게 만들 수 있습니다.

예시:

// Before
fn process_data(data: Vec<i32>) {
    if !data.is_empty() {
        // process data
    }
}

// After
fn process_data(data: Vec<i32>) {
    if data.is_empty() {
        return;
    }
    // process data
}

3. 코드 중복 제거

중복된 코드는 버그 발생 가능성을 높이고 코드 수정 시에 불필요한 작업량을 증가시킬 수 있습니다. 따라서 중복 코드를 함수나 매크로로 분리함으로써 유지보수성을 향상시킬 수 있습니다.

예시:

// Before
fn calculate_area(radius: f64) -> f64 {
    return 3.14 * radius * radius;
}

fn calculate_volume(radius: f64, height: f64) -> f64 {
    return 3.14 * radius * radius * height;
}

// After
fn calculate_area(radius: f64) -> f64 {
    return calculate_circle_area(radius);
}

fn calculate_volume(radius: f64, height: f64) -> f64 {
    return calculate_circle_area(radius) * height;
}

fn calculate_circle_area(radius: f64) -> f64 {
    return 3.14 * radius * radius;
}

위의 방법을 통해 러스트 코드에서 코드 냄새를 제거할 수 있으며, 더욱 읽기 쉽고 유지보수하기 편리한 코드로 만들 수 있습니다.

참고 자료