학습
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
}