기타 Lobsters · 2026-09-22

"화려한 문법이 코드를 망친다?" 러스트 개발자가 밝힌 함수 인자 문법의 함정

핵심 요약
  • 전 루비 개발자이자 러스트 기여자인 스티브 클라브닉이 프로그래밍 언어별 함수 인자(Arguments) 처리 방식을 비교한 글을 게시했습니다.
  • 루비나 파이썬의 키워드 인자와 유연한 문법이 겉보기엔 우아하지만, 실제로는 API 파악을 어렵게 만들고 코드를 극단적으로 장황하게 만들 수 있다고 짚었습니다.
  • 명명된 매개변수, 디폴트 인자, 함수 오버로딩 등의 장단점을 구체적인 코드 예시(Rails, FastAPI)를 통해 분석했습니다.
요약 Rust 핵심 기여자이자 유명 테크 블로거인 스티브 클라브닉(Steve Klabnik)이 함수 매개변수(parameter)와 인자(argument) 설계에 관한 기술적 고찰을 공유했습니다. 과거 루비(Ruby)와 루비온레일스(Rails)를 깊게 사용했고 현재는 러스트(Rust)를 다루는 저자는, 왜 러스트가 화려하고 유연한 인자 처리 기능들을 도입하는 것에 회의적인지 설명했습니다. 루비온레일스의 대표적인 함수 `redirect_to`는 옵션 해시, 디폴트 인자, 유연한 인자 타입 등을 조합해 문자열 URL, 모델 인스턴스, 해시 액션 등 다양한 방식으로 호출할 수 있어 겉보기에는 매우 간결하고 아름다워 보입니다. 하지만 저자는 이런 유연함 때문에 해당 함수로 무엇을 할 수 있는지 파악하기가 극도로 어려워지며, 라이브러리 문서화에 전적으로 의존해야 하는 치명적인 단점이 발생한다고 지적했습니다. 이어서 명명된 매개변수(Named parameters)의 장단점을 다루었습니다. 파이썬 FastAPI의 `@app.get` 사례처럼 인자 이름을 명시하면 호출부에서 의미가 명확해지는 장점이 있지만, 20개가 넘는 옵션을 전달하거나 변수를 그대로 다시 포워딩할 때는 코드가 극도로 장황해지고 중복이 심해집니다. 또한 디폴트 인자(Default arguments), 선택적 인자(Optional arguments), 함수 오버로딩(Overloading) 등 각 언어가 인자를 다루는 방식과 그에 따른 트레이드오프를 짚었습니다.
Sponsored · 광고