Clean ABAP ⑥ 메서드 호출을 짧게 쓰는 규칙 여섯 가지
3줄 요약
호출은 함수형으로 쓰고, 선택 사항인
EXPORTING,RECEIVING,me->는 생략해요.파라미터가 하나면 이름을 생략하되, 이름이 없으면 뜻이 안 보이는 호출은 이름을 남겨요.
정적 메서드와 타입은 클래스 이름으로 접근하고, 인스턴스 변수로 접근하지 않아요.
어떤 상황에서 쓰나요
오래된 ABAP 코드는 한 번 호출하는 데 CALL METHOD, EXPORTING, RECEIVING 이 줄줄이 붙어서 세로로 길어져요. 이번 회는 호출 한 줄 한 줄을 짧고 정확하게 만드는 작은 규칙들을 묶었어요. 각각은 사소하지만 코드 리뷰에서 자주 오가는 것들이에요.
핵심 내용
1. 함수형 호출을 써요. CALL METHOD 보다 괄호 호출이 짧아요. 동적으로 메서드 이름을 정하는 CALL METHOD modify->(method_name) 처럼 함수형이 불가능할 때만 절차형을 써요.
modify->update( node = /clean/my_bo_c=>node-item
key = item->key
data = item
changed_fields = changed_fields ).2. `RECEIVING` 은 생략해요. DATA(sum) = aggregate_values( values ). 로 받아요.
3. 선택 키워드 `EXPORTING` 도 생략해요. 위 예시처럼 값만 넘기는 호출에는 필요 없어요.
4. 파라미터가 하나면 이름을 생략해요. remove_duplicates( list ) 가 remove_duplicates( list = list ) 보다 낫지만, car->drive( speed = 50 ), update( asynchronous = abap_true ) 처럼 메서드 이름만으로는 값의 뜻이 안 보이면 이름을 남겨서 이해를 도와요.
5. `me->` 를 생략해요. 시스템이 암묵적으로 붙이는 자기 참조이므로 aggregate_values( values ) 로 쓰고, 지역 변수나 임포팅 파라미터와 이름이 겹칠 때만 me->logger = logger. 처럼 써요.
6. 정적 멤버는 클래스 이름으로 접근해요.
정적 메서드는
cl_my_class=>static_method( ).로 부르고lo_instance->static_method( ).처럼 인스턴스로 부르지 않아요. 정적 메서드는 클래스에 붙은 것이라 인스턴스로 부르면 혼동돼요.같은 클래스의 정적 메서드를 다른 정적 메서드 안에서 부를 때는 클래스 이름을 생략해도 되지만, 인스턴스 메서드 안에서는 클래스 이름을 붙여
cl_my_class=>a_static_method( ).로 부르라고 해요.클래스나 인터페이스에 정의한 타입도 인스턴스가 아니라 클래스 이름으로 접근해요(
TYPES blah TYPE lcl=>foo.). 인스턴스로 쓰면 타입이 인스턴스마다 다른 것처럼 보여요.
한국 현장에서는
이 규칙들은 대부분 코드 서식과 가독성에 관한 것이라 기존 코드를 한 번에 바꾸기보다, 수정하는 김에 바꾸는 방식이 부담이 적어요. ABAP Cleaner 같은 도구로 이런 항목을 자동으로 고칠 수 있는지는 이 글에서 확인하지 않았어요.
주의할 점
함수형 호출과 인라인 선언(
DATA(sum) = ...)은 7.40 이상에서만 돼요. 더 낮은 릴리스라면 이 규칙을 그대로 쓸 수 없어요. (7.40 기준은 원문에 적힌 것이 아니라 일반적으로 알려진 정보예요.)me->생략과 파라미터 이름 생략은 "가능하면"이지 강제가 아니에요. 가이드도 지역 변수와 이름이 겹치는 경우나 값의 뜻이 안 보이는 경우는 예외로 봐요.원문은 2019년 첫 공개, 2025년 3월 마지막 수정본이에요. 이 글은 읽고 정리한 것이며 코드를 직접 돌려 보지는 않았어요.
원문 주소: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#calls
출처와 이용 안내
원문: Clean ABAP - Methods: Calls · 작성자 SAP SE and contributors SAP/styleguides · 작성일 2019-05-01 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준 · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 CC BY 3.0 라이선스(https://creativecommons.org/licenses/by/3.0/)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기