반응형
“IF 분기에서 빈 곳을 만들지 마라”는 프로그래밍에서 조건문(IF-ELSE)을 사용할 때, 특정 조건을 처리하지 않고 빈 블록으로 남겨두는 것을 피하라는 의미입니다. 이는 코드의 가독성을 높이고, 실수나 논리적 오류를 방지하기 위해 권장되는 코딩 스타일 가이드입니다.
왜 빈 블록을 피해야 하는가?
- 가독성 저하: IF 문에서 조건을 명시하고도 아무런 처리를 하지 않으면, 코드가 불완전하거나 실수로 남겨진 것처럼 보일 수 있습니다. 이는 코드의 가독성을 저하시킵니다.
- 의도 파악이 어려움: 빈 블록은 코드의 의도를 명확히 전달하지 못합니다. 나중에 코드를 유지보수하거나 다른 개발자가 코드를 검토할 때, 빈 블록이 실수인지, 아니면 의도적인 것인지 파악하기 어렵습니다.
- 오류 발생 가능성: 빈 블록은 실제로 의도한 논리가 제대로 구현되지 않았을 가능성을 내포합니다. IF 문을 작성했지만 처리가 누락된 경우, 실행 중에 의도하지 않은 동작이나 논리적 오류가 발생할 수 있습니다.
* 잘못된 패턴
IF lv_status = abap_false.
ELSE.
* 로직 수행
ENDIF.
* 올바른 패턴
IF lv_status = abap_true.
* 로직 수행
ENDIF.
“IF 분기에서 빈 곳을 만들지 마라”는 조건문을 사용할 때 빈 블록을 남겨두지 말고, 가능한 모든 경우를 처리하라는 의미입니다. 빈 블록을 남겨두면 코드의 가독성과 유지보수성이 저하되며, 논리적 오류가 발생할 가능성이 높아집니다. 따라서 의도적으로 아무 작업도 하지 않으려는 경우에는 주석을 추가하거나 명시적인 코드를 사용하여 이를 명확히 표현하는 것이 좋습니다.
“여러 대안이 있다면 ELSE IF 대신에 CASE를 사용하라”는 코딩 스타일 지침은 조건문에서 여러 가지 대안을 처리해야 할 때, ELSE IF 구문보다 CASE 문을 사용하는 것이 더 명확하고 가독성이 좋다는 의미입니다. CASE 문은 여러 조건을 처리하는 데 있어 코드의 간결성과 일관성을 유지할 수 있으며, 복잡한 논리를 쉽게 파악할 수 있게 도와줍니다.
왜 CASE 문을 사용하는 것이 좋은가?
- 가독성 향상: CASE 문은 여러 조건을 한 번에 처리하는 데 최적화되어 있으며, 각 대안을 명확하게 구분할 수 있습니다. 여러 개의 ELSE IF 구문을 사용하면 코드가 길어지고 복잡해지기 쉬운데, CASE 문은 이를 구조화하여 더 간결하게 만들 수 있습니다.
- 논리 구조 명확화: CASE 문은 조건들이 하나의 주제(예: 특정 변수의 값)에 대한 여러 대안을 처리할 때 적합합니다. CASE 문을 사용하면 코드의 흐름이 더 명확해지고, 논리 구조가 더 쉽게 파악됩니다.
- 유지보수성 증가: 여러 조건을 하나로 묶어 처리할 수 있는 CASE 문은 유지보수가 용이합니다. 새로운 대안을 추가하거나 조건을 수정할 때 코드의 구조를 쉽게 변경할 수 있습니다.
- 실수 방지: ELSE IF 구문을 사용할 때는 조건을 명확하게 관리하지 않으면 실수로 논리적인 오류가 발생할 수 있습니다. CASE 문은 이러한 실수를 줄이는 데 도움이 됩니다.
* 잘못된 패턴
IF type = '1'.
* 로직 수행
ELSEIF type = '2'.
* 로직 수행
ELSEIF type = '3'.
* 로직 수행
ENDIF.
* 올바른 패턴
CASE type.
WHEN '1'.
* 로직 수행
WHEN '2'.
* 로직 수행
WHEN '3'.
* 로직 수행
ENDCASE.
언제 CASE 문을 사용하는 것이 적합한가?
- 하나의 변수나 표현식에 대한 여러 가지 대안을 처리할 때: CASE 문은 하나의 변수나 표현식에 대한 여러 가지 가능한 값을 처리하는 데 적합합니다. 예를 들어, 상태 코드, 메뉴 선택, 이벤트 처리 등 다양한 경우에 사용할 수 있습니다.
- 조건이 많을 때: ELSE IF 구문이 여러 개로 길어질 경우, CASE 문을 사용하면 더 간결하게 작성할 수 있습니다. 이는 코드의 가독성을 높이고 유지보수를 용이하게 합니다.
- 논리적인 구조가 중요할 때: CASE 문은 논리적인 구조를 명확하게 표현할 수 있어, 코드의 흐름을 더 쉽게 이해할 수 있게 도와줍니다.
CASE 문 사용 시 주의사항
- 범위 조건: CASE 문은 단일 값 비교에 최적화되어 있습니다. 범위 조건이나 복잡한 논리 연산이 필요한 경우, CASE 문보다는 IF 또는 ELSE IF 구문이 더 적합할 수 있습니다.
- 순차적 비교가 필요한 경우: 조건을 순차적으로 평가해야 하는 경우에는 ELSE IF 구문이 더 적합할 수 있습니다. 예를 들어, 조건이 상호 배타적이지 않고 순차적으로 처리되어야 하는 경우에는 IF 구조를 사용하는 것이 더 나을 수 있습니다.
“여러 대안이 있다면 ELSE IF 대신에 CASE를 사용하라”는 코딩 스타일 지침은 여러 가지 대안을 처리할 때 CASE 문을 사용하여 코드의 가독성, 논리 구조, 유지보수성을 높이라는 의미입니다. CASE 문은 단일 값에 대한 여러 조건을 처리하는 데 적합하며, 코드가 길어지고 복잡해지는 것을 방지하는 데 유용합니다. 따라서 조건이 많고, 하나의 변수나 표현식에 대한 여러 가지 경우를 처리해야 한다면 CASE 문을 사용하는 것이 더 바람직합니다.
“분기를 최대한 적게 하라”는 프로그래밍에서 코드의 복잡도를 줄이기 위해 조건문(IF, ELSE IF, CASE 등)과 같은 분기 구문을 최소화하라는 지침입니다. 조건문이 많아지면 코드의 흐름을 파악하기 어려워지고, 유지보수성이 떨어지며, 논리적인 오류 발생 가능성도 높아집니다. 따라서 불필요한 분기를 줄이고, 가능한 간결하고 명확한 코드를 작성하는 것이 중요합니다.
분기를 최소화해야 하는 이유
- 가독성 향상: 분기문이 많아지면 코드의 흐름이 복잡해지고, 가독성이 떨어집니다. 분기를 최소화하면 코드가 더 간결해져서 이해하기 쉽습니다.
- 유지보수 용이: 조건이 많을수록 코드 수정 시 영향을 받는 부분이 많아집니다. 분기를 최소화하면 변경 사항이 적은 코드 영역에서 발생하므로 유지보수가 쉬워집니다.
- 논리적 오류 감소: 여러 조건문이 겹치면 논리적인 오류가 발생할 가능성이 커집니다. 특히 조건이 서로 중첩되거나 순서에 영향을 받는 경우, 잘못된 조건 처리로 인해 의도하지 않은 동작을 유발할 수 있습니다.
- 성능 최적화: 조건문이 많으면 프로그램의 실행 경로가 복잡해지고, 불필요한 연산이 증가할 수 있습니다. 이를 최소화하면 성능 최적화에 도움이 됩니다.
* 잘못된 패턴
IF type = '1'.
IF type = '10'.
ENDIF.
ELSE.
IF type = '2'.
ELSE.
IF type = '10'.
ENDIF.
ENDIF.
ENDIF.
* 올바른 패턴
IF type = '1' AND type = '10'.
ELSE.
IF type = '2' AND type = '10'.
ENDIF.
ENDIF.
“분기를 최대한 적게 하라”는 복잡한 조건문과 분기문을 줄여서 코드의 가독성, 유지보수성, 성능을 향상시키라는 의미입니다. 이를 위해 삼항 연산자, 함수 또는 메서드 분리, 기본값 활용, 데이터 구조를 활용한 매핑, 그리고 조건 간소화를 사용하여 분기를 최소화할 수 있습니다. 코드의 논리 흐름을 단순하게 유지하고, 불필요한 조건문을 줄이는 것이 더 효율적이고 유지보수하기 쉬운 코드를 작성하는 핵심입니다.
반응형
'ABAP Clean Code' 카테고리의 다른 글
| ABAP 클린 코드 - Class 클래스 (객체 지향 클래스) [9-1] (0) | 2024.08.21 |
|---|---|
| ABAP 클린 코드 - 정규식 [8] (0) | 2024.08.20 |
| ABAP 클린 코드 - Condition 컨디션 [6] (0) | 2024.08.18 |
| ABAP 클린 코드 - Boolean 불리언 [5] (0) | 2024.08.17 |
| ABAP 클린 코드 - 문자열 [4] (0) | 2024.08.16 |