IMCAT.DEV
로그인 가입
Shell 중급 함수형

Shell 함수형 프로그래밍 패턴

Shell 함수형 프로그래밍 패턴 — 중급

함수형 프로그래밍 패턴

1. 도입 (왜 배워야 하는가)

함수형 프로그래밍 패턴은 현대 소프트웨어 개발에서 점점 더 중요해지고 있습니다. 이는 코드의 가독성과 재사용성을 높이며, 사이드 이펙트를 줄이고 멀티스레딩 환경에서도 안전하게 사용할 수 있게 돕습니다. 실무에서는 이러한 패턴을 사용하지 않으면 복잡한 비즈니스 로직을 효과적으로 관리하기 어려워지며, 코드의 품질이 저하될 수 있습니다. 또한, 코드 유지보수와 협업에서도 어려움을 겪게 됩니다. 이러한 패턴을 이해하고 활용하는 것은 개발자의 역량을 극대화하는 데 매우 중요합니다.

2. 핵심 개념 설명

함수형 프로그래밍에서 중요한 개념은 일급 함수, 고차 함수, 불변성, 순수 함수입니다.

용어정의
일급 함수함수를 변수에 할당하거나 인자로 전달할 수 있는 함수
고차 함수함수를 인자로 받거나 함수를 반환하는 함수
불변성데이터를 변경하지 않고 새로운 데이터를 생성하는 특성
순수 함수같은 입력에 대해 항상 같은 출력을 반환하는 함수

이 개념들을 실생활에 비유하자면, 일급 함수는 요리사가 새로운 요리법을 개발하고, 고차 함수는 요리사가 다른 요리사에게 요리법을 가르쳐주는 상황으로 비유할 수 있습니다. 불변성은 요리를 하면서 재료를 원래 상태로 되돌리는 것이며, 순수 함수는 같은 재료로 항상 같은 맛의 요리를 만드는 것과 같습니다.

3. 기본 코드 예제

아래는 일급 함수와 고차 함수를 사용하는 간단한 예제입니다.

# 일급 함수와 고차 함수 예제

# 함수를 정의
add() {
  local sum=$(( $1 + $2 ))
  echo $sum
}

# 고차 함수
execute_function() {
  local result=$($1 3 5)  # $1은 함수의 이름
  echo "결과: $result"
}

# add 함수를 고차 함수에 전달
execute_function add

실행 결과

결과: 8
  • add 함수는 두 개의 숫자를 더하고 결과를 반환합니다.
  • execute_function 함수는 첫 번째 인자로 받은 함수를 실행합니다.
  • execute_function add 호출 시, add 함수가 실행되어 3과 5의 합인 8이 출력됩니다.
  • 4. 실전 활용 예제

    예제 1: 파일에서 특정 패턴 찾기

    쇼핑몰에서 상품 목록 파일에서 특정 키워드를 검색할 때 사용할 수 있습니다.

    grep_pattern() {
      grep "$1" "$2"
    }
    
    search_products() {
      local pattern=$1
      local file=$2
      echo "검색 결과:"
      grep_pattern "$pattern" "$file"
    }
    
    search_products "신발" "products.txt"

    예제 2: 로그 파일 필터링

    서버 로그 파일에서 특정 에러 메시지를 찾을 때 유용합니다.

    filter_errors() {
      grep "ERROR" "$1"
    }
    
    log_analysis() {
      local log_file=$1
      echo "에러 로그:"
      filter_errors "$log_file"
    }
    
    log_analysis "server.log"

    5. 흔한 실수와 주의사항

    실수 1: 함수 호출 시 인자 전달을 잊는 경우

    # 잘못된 코드
    execute_function  # 인자가 없어서 에러 발생
    
    # 올바른 코드
    execute_function add

    실수 2: 함수 내부에서 전역 변수를 사용하려고 하는 경우

    # 잘못된 코드
    add() {
      sum=$(( $1 + $2 ))  # 전역 변수 사용
      echo $sum
    }
    
    # 올바른 코드
    add() {
      local sum=$(( $1 + $2 ))  # 지역 변수 사용
      echo $sum
    }

    6. 정리

  • 함수형 프로그래밍 패턴은 코드의 가독성과 재사용성을 높인다.
  • 일급 함수, 고차 함수, 순수 함수, 불변성 등의 개념을 이해해야 한다.
  • 실무에서 자주 사용하는 패턴을 잘 활용하면 복잡한 로직을 관리하기 쉬워진다.
  • 다음에 학습하면 좋은 주제로는 "비동기 프로그래밍"이나 "클로저"를 추천합니다.