리팩터링/리팩터링 기법

리팩터링 기법. 함수 인라인(Inline Function)

developer-tj 2023. 3. 23. 12:00
반응형

함수 인라인(Inline Function)은 함수 호출 대신 함수 코드 자체를 호출하는 코드로 대체하는 리팩터링 기법 중 하나입니다.
즉, 함수 호출이 발생하는 부분을 함수의 코드로 직접 대체함으로써 함수 호출의 오버헤드를 제거하고 성능을 향상시킬 수 있습니다.

인라인 함수는 함수의 크기가 작을 때 효과적입니다.
함수 호출이 많이 일어나는 루프와 같은 코드에서 인라인 함수를 사용하면 성능을 향상시킬 수 있습니다.
또한, 인라인 함수는 일반적으로 함수 호출을 대체하기 때문에 코드의 가독성이 향상될 수도 있습니다.

함수를 인라인으로 변환하는 것은 일반적으로 함수 코드를 함수 호출로 대체하는 것보다 코드 양이 늘어나기 때문에 코드의 크기가 커지는 단점이 있습니다.
또한, 함수 코드를 직접 호출하는 것이기 때문에 코드의 중복이 발생할 수 있습니다.

리팩터링을 수행할 때는 함수 인라인을 사용하여 코드의 성능을 향상시킬 수 있는지를 고려해야 합니다.
이를 통해 함수 호출 오버헤드를 제거하고 성능을 향상시킬 수 있지만, 코드의 크기가 커지거나 중복 코드가 발생할 수 있으므로 주의가 필요합니다.

다음은 간단한 함수 인라인(Inline Function)의 예제 코드입니다.


#include <iostream>

// 인라인 함수 선언
inline int square(int x) {
    return x * x;
}

int main() {
    int num = 5;
    std::cout << "The square of " << num << " is " << square(num) << std::endl;
    return 0;
}


위 코드에서 inline 키워드를 이용하여 square 함수를 인라인 함수로 선언하였습니다.
C++에서는 해당 키워드를 사용하는 것으로 리팩터링을 할 수 있습니다.
인라인 함수는 호출될 때 함수 호출 비용을 줄이기 위해 함수의 본문 코드를 호출하는 곳에 직접 삽입됩니다.
따라서 함수 호출이 필요한 경우보다는 일반적으로 실행 시간과 메모리 사용량이 증가할 수 있습니다.


해당 리팩터링은 함수 추출하기와 반대되는 리팩터링 입니다.