[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;
}
위의 방법을 통해 러스트 코드에서 코드 냄새를 제거할 수 있으며, 더욱 읽기 쉽고 유지보수하기 편리한 코드로 만들 수 있습니다.
참고 자료
- “The Pragmatic Programmer” by Andrew Hunt and David Thomas
- “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin