14. Infix, Inline, Local Functions

infix, inline, 지역 함수

치트시트

  • infix

    • infix fun T.func(param)

    • 멤버/확장 함수 + 단일 파라미터

    • DSL, 가독성 개선

  • inline

    • 고차 함수 호출 오버헤드 줄임

    • 람다 객체 생성 피함

    • 성능-critical 코드, 유틸 함수에서만 신중히

  • local function

    • 함수 내부에 함수 정의

    • 캡슐화 + 중복 제거

    • 스코프 밖 노출 방지


1) Infix 함수 (중위 함수)

  • 선언 조건:

    • 멤버 함수 또는 확장 함수여야 함

    • 단일 파라미터만 가질 수 있음

    • infix 키워드 붙이기

  • 서버 활용

    • DSL 스타일 API 설계

    • 예: 권한 DSL → user hasRole Role.ADMIN

👉 자바에는 없는 기능. 가독성 높은 DSL 구현에 적합.


2) Inline 함수

  • 함수 호출 대신 본문을 호출 지점에 복붙하는 방식

  • 함수 호출 오버헤드 제거, 특히 고차 함수에서 유용

  • 장점:

    • 고차 함수에서 람다 객체 생성/캡처 비용 절감

    • 성능-critical 코드에서 유리

  • 단점:

    • 코드 크기 증가 가능 → 신중히 사용

    • 너무 많이 쓰면 오히려 성능 저하

  • 서버 활용

    • 공통 유틸 (로깅, 트랜잭션 처리, 성능 측정)

    • try-with-resources 유틸을 inline + 람다로 구현 가능


3) 지역 함수 (Local function)

  • 함수 안에 함수를 정의

  • 해당 스코프 내부에서만 사용 가능 → 캡슐화 강화

  • 장점:

    • 코드 중복 제거

    • 외부로 노출하지 않아도 됨 (불필요한 public 메소드 방지)

  • 단점:

    • 깊게 중첩되면 가독성 저하

  • 서버 활용

    • 유효성 검증 로직 캡슐화

    • 비즈니스 규칙 처리 중 공통 서브 로직 정리


4) 서버 개발 실전 예시

A. Infix DSL

B. Inline + Resource 관리

C. Local function으로 중복 제거

Last updated