Clean ABAP ① 이름만 잘 지어도 코드가 읽혀요
3줄 요약
이름에는 데이터의 타입보다 역할과 의미를 담아요. 예를 들어 read_t005보다 read_country_codes가 목적을 설명하기 쉬워요.
같은 개념에는 같은 단어와 약어를 써서 코드를 쉽게 검색할 수 있게 해요.
Clean ABAP은 lv_·iv_ 같은 접두어를 줄이도록 권해요. 기존 프로젝트에서는 팀 표준과 먼저 조율하세요.
어떤 상황에서 쓰나요
변수 이름만 보고는 어떤 데이터인지 알 수 없어 코드를 한참 읽은 경험이 있을 거예요. 이번 글에서는 SAP의 Clean ABAP 가이드를 바탕으로 변수·클래스·메서드의 이름을 짓는 기준을 알아봐요. 이름에 담을 의미, 약어를 쓰는 방법, 팀의 기존 규칙과 조율할 부분을 차례로 살펴볼게요.
같은 모양의 상자라도 이름에 담긴 의미가 다르면 용도를 바로 알 수 있습니다. 아래 그림처럼 변수나 메서드의 역할이 이름에서 드러나도록 정해 보세요.
핵심 내용
1. 의도가 드러나는 이름을 써요. 값이 아니라 의미를 이름에 담아요.
CONSTANTS max_wait_time_in_seconds TYPE i ...
DATA customizing_entries TYPE STANDARD TABLE ...
METHODS read_user_preferences ...
" 피하고 싶은 이름: sysubrc_04, iso3166tab, read_t005이름만으로 의미가 전달되지 않는다면 주석을 덧붙이기 전에 이름을 먼저 고쳐 보세요. 주석 이야기는 이 연재의 열 번째 회에서 다시 나와요.
2. 업무 용어와 기술 용어를 섞어 쓰되, 나만의 말은 만들지 않아요. 업무 로직에 가까운 계층(API, 비즈니스 객체)은 "계정", "원장" 같은 업무 용어로, 팩토리나 알고리즘 같은 기술 계층은 "큐", "트리" 같은 기술 용어로 이름을 붙여요. 개발자, 기획자, 파트너, 고객이 사전 없이 주고받을 수 있는 말이어야 한다는 게 기준이에요.
3. 복수형을 쓰고, 소리 내어 읽을 수 있는 이름을 지어요. SAP 에는 테이블 변수를 단수로 쓰는 오랜 습관이 있지만(country), 가이드는 countries처럼 복수형을 권해요. 단, 이 조언은 변수와 속성에 대한 것이고, 데이터베이스 테이블 이름을 단수로 짓는 널리 쓰이는 관례까지 바꾸자는 뜻은 아니에요. dobjt 같은 암호보다는 detection_object_types처럼 소리 내어 읽을 수 있는 이름이 좋아요.
4. snake_case와 약어. ABAP은 대소문자를 구분하지 않으니 snake_case로 통일해요. 글자 수 제한(메서드는 30자)에 걸려도 maxresponsetimeinmillisec처럼 붙여 쓰지 말고, 중요하지 않은 단어부터 줄여요. 약어는 모호해지기 쉬워요. cust가 customizing 인지 customer 인지 custom 인지 SAP 안에서는 셋 다 흔하니까요. 대신 줄이기로 했다면 어디서나 같은 약어를 써야 검색이 돼요.
5. 클래스는 명사, 메서드는 동사. account, user_preferences 같은 클래스에 withdraw, add_message, read_entries 같은 메서드를 붙여요. 불리언을 돌려주는 메서드는 is_, has_로 시작하면 IF is_empty( table ).처럼 문장처럼 읽혀요.
6. 군더더기 단어, 동의어, 패턴 이름.
account_data,alert_object의data,object는 빼요. 붙여야 한다면user_preferences(←user_info) 처럼 구체적인 의미를 담을 때만 사용해요.같은 일을 하는 메서드는
read_this,read_that처럼 같은 동사를 써요.retrieve_that,query_those로 섞으면 읽는 사람이 차이를 찾느라 시간을 써요.file_factory라는 이름은 정말 팩토리 패턴일 때만 붙여요.
7. 타입을 나타내는 접두어는 줄여요. 가이드는 iv_, rv_처럼 타입이나 용도를 표시하는 접두어를 생략하라고 권해요.
METHOD add_two_numbers.
result = a + b.
ENDMETHOD.
" 불필요하게 긴 쪽: rv_result = iv_a + iv_b.8. 내장 함수와 같은 이름을 피하세요. 클래스 안에서 메서드 이름이 lines, line_exists, condense, strlen 같은 내장 함수와 같으면, 인자 수와 타입에 상관없이 이름이 같은 메서드가 우선 해석되어 원래 내장 함수를 호출하기 어려워져요. 이런 이름은 피해요.
한국 현장에서는
lv_, gt_ 같은 접두어를 사내 표준으로 정해 둔 팀이라면 가이드를 한 번에 적용하기보다 새로 만드는 클래스부터 시험해 보는 식이 부담이 적어요. 이 가이드에는 한국어판(CleanABAP_kr.md)도 있으니 팀원과 같이 읽을 때 쓸 수 있어요. 사내 표준과 어떻게 맞출지는 각 팀이 정할 일이라 여기서 정답을 말하지 않을게요.
주의할 점
이 가이드는 의견이에요. 접두어를 없애라는 조언처럼 SAP 안에서도 팀마다 다르게 쓰는 부분이 있어요. 팀 표준이 있으면 그것을 먼저 따르세요.
원문의 첫 공개는 2019년이고 마지막 수정은 2025년 3월이에요. 이름 짓기 장은 릴리스와 무관하지만, 최신 내용은 원문 저장소에서 확인하세요.
이 글은 원문의 일부 예시를 줄여 옮겼어요. 직접 코드를 돌려 확인하지는 않았어요.
원문 주소: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#names
출처와 이용 안내
원문: Clean ABAP - Names · 작성자 SAP SE and contributors SAP/styleguides · 작성일 2019-05-01 · 기준 릴리스 무관 · 확인일 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
아직 댓글이 없어요.
로그인하고 댓글 쓰기