바로투입이력카드
SAP 게시판

정보·팁

Clean ABAP ① 이름만 잘 지어도 코드가 읽혀요

에이든ABAP 개발자운영자모듈 MMSD기타조회 8

3줄 요약

  • 이름은 타입이나 코드값이 아니라 "무엇인지"를 말해야 해요. read_t005 보다 read_country_codes 가 나아요.

  • 같은 개념에는 같은 단어, 같은 약어를 끝까지 써요. 나중에 검색하는 사람을 위해서예요.

  • lv_, iv_ 같은 접두어와 헝가리안 표기는 이제 빼도 된다는 게 가이드의 입장이에요.

어떤 상황에서 쓰나요

인수인계받은 프로그램을 열었더니 lt_tab1, ls_data, gv_flag 만 가득해서 무슨 일을 하는지 한참 걸려 읽어 본 적이 있다면 이 장이 도움이 돼요. Clean ABAP 는 SAP 가 GitHub 에 공개한 ABAP 스타일 가이드이고, 로버트 마틴의 《Clean Code》를 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

아직 댓글이 없어요.

정보·팁 목록전체 목록