ABAP 클린 코드 - Boolean 불리언 [5]
“Boolean을 현명하게 사용하라”는 지침은 프로그래밍에서 논리값(TRUE, FALSE)을 다룰 때 명확하고 일관된 방식으로 사용하는 것이 중요하다는 의미입니다. 이 지침은 특히 코드 가독성, 유지보수성, 그리고 코드의 의도를 명확히 전달하는 데 초점을 맞춥니다. ABAP에서도 Boolean 값을 현명하게 사용하여 복잡한 논리 흐름을 간단하고 명확하게 표현하는 것이 중요합니다.
* 잘못된 패턴
DATA: is_valid TYPE abap_bool.
is_valid = abap_true.
is_valid = abap_false.
IF value = is_valid.
* 로직 수행
ENDIF.
Boolean 변수를 사용할 때는 명시적인 비교를 통해 논리적인 검사를 수행하는 것이 좋습니다. 조건문에서 Boolean 변수를 사용할 때, 변수 자체를 검사하는 대신 abap_true 또는 abap_false와 명시적으로 비교하는 것이 코드의 명확성을 높입니다.
* 올바른 패턴
IF value = abap_true.
* 로직 수행
ENDIF.
“Boolean에서는 ABAP_BOOL을 사용하라”는 지침은 ABAP에서 논리값을 다룰 때 ABAP_BOOL 타입을 사용하여 참(TRUE)과 거짓(FALSE)을 명확하게 표현하고, 코드의 일관성과 가독성을 높이자는 의미입니다.
ABAP_BOOL은 ABAP에서 논리값을 나타내기 위해 정의된 데이터 타입으로, SAP 표준에서 참과 거짓을 표현하기 위해 사용됩니다. 이 타입은 CHAR1(문자형) 타입을 기반으로 하며, abap_true와 abap_false라는 상수 값을 통해 논리값을 표현합니다.
ABAP_BOOL의 주요 특징
1. 기본 정의:
- ABAP_BOOL은 SAP 표준 타입이며, 내부적으로는 CHAR1 타입으로 정의됩니다. 값은 문자 'X'로 참(TRUE)을, 빈 문자열 ''로 거짓(FALSE)을 나타냅니다.
- SAP에서 제공하는 상수 abap_true와 abap_false를 사용하여 논리값을 표현할 수 있습니다.
CONSTANTS: abap_true TYPE abap_bool VALUE 'X',
abap_false TYPE abap_bool VALUE ''.
2. 일관된 논리값 표현:
- ABAP_BOOL 타입을 사용하면 논리적인 참과 거짓을 일관된 방식으로 표현할 수 있습니다. 이로 인해 코드가 더욱 명확해지고, 다른 개발자들이 코드를 쉽게 이해할 수 있습니다.
3. SAP 표준과 호환:
- ABAP_BOOL 타입과 관련된 상수는 SAP 표준 라이브러리에서 자주 사용되므로, 이를 사용하면 SAP의 다른 표준 기능과도 호환성을 유지할 수 있습니다.
* 올바른 패턴
METHODS: is_valid_user
RETURNING VALUE(rv_result) TYPE abap_bool.
rv_result = abap_true.
이 메서드는 ABAP_BOOL 타입의 논리값을 반환하여, 사용자 유효성 검사를 처리합니다. 반환값이 abap_true 또는 abap_false로 명확히 정의되어 있어 코드의 의도가 명확합니다.
ABAP_BOOL 사용의 장점
- 명확한 논리값 표현: ABAP_BOOL은 논리적인 참(TRUE)과 거짓(FALSE)을 명확하게 표현할 수 있는 데이터 타입이므로, 코드의 명확성과 일관성을 유지할 수 있습니다.
- SAP 표준 준수: SAP 표준에서 제공하는 논리값 상수(abap_true, abap_false)와 호환되므로, 표준 함수 모듈이나 클래스와의 통합성이 높아집니다.
- 가독성 향상: ABAP_BOOL 타입을 사용하면 코드를 읽는 사람이 해당 변수가 논리적인 참/거짓 값을 표현한다는 것을 쉽게 이해할 수 있습니다. 이로 인해 코드 가독성이 향상됩니다.
- 일관성 유지: Boolean 타입의 논리값을 처리할 때, ABAP_BOOL과 상수(abap_true, abap_false)를 일관되게 사용하면 코드 전반에 걸쳐 일관성을 유지할 수 있습니다.
“Boolean에서는 ABAP_BOOL을 사용하라”는 지침은 ABAP에서 논리값을 처리할 때 ABAP_BOOL 타입과 상수(abap_true, abap_false)를 사용하여 코드를 명확하고 일관되게 작성하라는 의미입니다. 이 방법을 사용하면 SAP 표준과 호환성을 유지하면서도 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.
“서로를 비교할 때는 ABAP_TRUE와 ABAP_FALSE를 사용하라”는 지침은 ABAP에서 Boolean 값을 비교할 때 명확한 논리적 상수인 ABAP_TRUE와 ABAP_FALSE를 사용하여 논리적 비교를 수행하라는 의미입니다. 이 지침은 코드의 명확성과 일관성을 유지하기 위한 중요한 원칙입니다.
ABAP_TRUE와 ABAP_FALSE 상수의 의미
- ABAP_TRUE: 이 상수는 논리적으로 참(True)을 나타내는 값입니다. ABAP에서는 문자 'X'로 표현됩니다.
- ABAP_FALSE: 이 상수는 논리적으로 거짓(False)을 나타내는 값입니다. ABAP에서는 빈 문자열 ''로 표현됩니다.
SAP 표준에서 ABAP_BOOL 타입의 Boolean 값을 표현할 때, ABAP_TRUE와 ABAP_FALSE를 사용하는 것이 권장됩니다. 이 상수들을 사용하면 논리적인 비교가 더 명확해지고 코드의 일관성이 유지됩니다.
* 잘못된 패턴
IF lv_is_valid IS NOT INITIAL.
* 올바른 패턴
IF lv_is_valid = abap_true.
WRITE: / 'The value is TRUE'.
ELSE.
WRITE: / 'The value is FALSE'.
ENDIF.
“서로를 비교할 때는 ABAP_TRUE와 ABAP_FALSE를 사용하라”는 ABAP에서 Boolean 값을 비교할 때, 명시적으로 abap_true와 abap_false 상수를 사용하여 논리적 비교를 수행하라는 의미입니다. 이 방법을 사용하면 코드의 가독성, 일관성, 그리고 명확성을 크게 향상시킬 수 있으며, SAP 표준과도 호환성을 유지할 수 있습니다.
“Boolean 변수를 설정할 때는 XSDBOOL을 사용하라”는 지침은 ABAP에서 Boolean 값을 설정할 때, 특히 조건문을 평가하여 Boolean 변수에 값을 할당할 때 XSDBOOL 함수를 사용하라는 의미입니다. 이 함수는 조건문을 간단하게 평가하고, 그 결과를 abap_true 또는 abap_false로 변환하여 Boolean 변수에 설정하는 역할을 합니다.
XSDBOOL 함수란?
XSDBOOL은 조건식을 Boolean 값으로 변환하는 ABAP의 함수입니다. 이 함수는 주어진 조건식이 참일 경우 abap_true('X'), 거짓일 경우 abap_false('')를 반환합니다. 이를 통해 코드에서 조건 평가를 Boolean 값으로 간단히 표현할 수 있습니다.
조건문을 평가하고 그 결과를 Boolean 변수에 설정할 때, XSDBOOL을 사용하면 코드가 간결해지고 명확해집니다.
DATA: lv_is_valid TYPE abap_bool.
lv_is_valid = xsdbool( sy-subrc = 0 ).
이 예시에서는 sy-subrc = 0 조건을 평가하고, 그 결과에 따라 lv_is_valid 변수에 abap_true 또는 abap_false를 설정합니다. 이 방식은 조건을 직접 IF 문으로 처리하는 것보다 코드가 더 간결해집니다.
XSDBOOL 함수는 여러 조건을 평가하여 Boolean 값을 설정할 때도 유용합니다.
DATA: lv_is_active TYPE abap_bool.
lv_is_active = xsdbool( lv_user_status = 'ACTIVE' AND lv_login_attempts < 3 ).
이 코드에서는 lv_user_status가 'ACTIVE'이고 lv_login_attempts가 3보다 작은 경우 lv_is_active를 abap_true로 설정합니다. 그렇지 않으면 abap_false가 할당됩니다.
XSDBOOL 사용의 장점
- 코드 간결화: XSDBOOL을 사용하면 조건문을 평가하는 코드를 간단하게 작성할 수 있습니다. 복잡한 조건을 직접 IF 문으로 처리하는 것보다 코드가 짧고 이해하기 쉬워집니다.
- 명확성: 조건을 Boolean 값으로 직접 변환하는 XSDBOOL을 사용하면 코드의 의도가 명확해집니다. 조건 평가와 Boolean 값 설정이 한 줄로 처리되므로, 코드의 가독성이 높아집니다.
- 유지보수 용이성: 코드가 간결하고 명확해지기 때문에, XSDBOOL을 사용한 코드는 유지보수하기가 더 쉬워집니다. 조건문을 직접 사용하는 경우보다 로직을 이해하고 수정하는 데 걸리는 시간이 줄어듭니다.
- 표준화된 Boolean 처리: XSDBOOL은 SAP 표준 함수로, SAP 코드 스타일과 일관된 Boolean 처리를 제공합니다. 이를 사용하면 코드의 일관성을 유지하면서도 SAP 표준과의 호환성을 높일 수 있습니다.
사용 시 주의사항
- XSDBOOL은 단일 조건식에 대해 사용되는 것이 일반적입니다. 매우 복잡한 논리 연산이나 다중 조건의 평가가 필요한 경우, 코드의 가독성을 해치지 않도록 주의해야 합니다. 조건이 복잡해지면 IF 문이나 CASE 문을 사용하는 것이 더 적합할 수 있습니다.
- XSDBOOL은 기본적으로 abap_true와 abap_false 값을 반환하므로, 이 함수가 반환하는 값이 특정 처리 로직에서 기대하는 형식인지 확인해야 합니다.
“Boolean 변수를 설정할 때는 XSDBOOL을 사용하라”는 지침은 ABAP에서 조건식을 Boolean 값으로 변환할 때, SAP 표준 함수인 XSDBOOL을 사용하여 간결하고 명확하게 코드를 작성하라는 의미입니다. XSDBOOL을 사용하면 코드의 가독성과 유지보수성이 향상되며, 조건 평가 결과를 Boolean 값으로 일관되게 처리할 수 있습니다. 이를 통해 SAP 표준과의 호환성을 유지하면서도, 더 효율적인 코드를 작성할 수 있습니다.