μ΄ κΈμ γClean ABAP – A Style Guide for Developersγ μμ (written by Klaus Haeuptle, Florian Hoffmann, Rodrigo Jordão, Michel Martin, Anagha Ravinarayan, Kai Westerholz)μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. ν΄λΉ λ΄μ©μ μ’ λ μ½κ³ μ΄ν΄ν μ μλλ‘ μμ½/μ 리 λ° κ°μΈμ μΈ μ견μ λΆμ¬ μ¬κ΅¬μ±ν ν¬μ€ν μ λλ€.

ABAPμ μ²μ λ°°μ°λ€ 보면 λ³μμ μμμ μ°¨μ΄λ₯Ό ν·κ°λ¦¬κΈ° μ½λ€. νΉν μ μ§λ³΄μλ νμ₯μ΄ μ¬μ΄ ν΄λ¦° μ½λλ₯Ό μμ±νλ €λ©΄, μμλ₯Ό μ λλ‘ μ μνκ³ μ¬μ©νλ κ²μ΄ κ΅μ₯ν μ€μνλ€. μ΄λ² κΈμμλ ABAPμμ μμλ₯Ό νμ©ν΄ μ½λλ₯Ό λ μ½κΈ° μ½κ³ , μ€λ₯λ‘λΆν° λ°©μ§ν μ λ°©λ²μ μμ보λλ‘ νμ.
1. λ§€μ§ λλ²(Magic Number)λ₯Ό νΌνμ.
IF l_typecode = 'E'.
ENDIF.
μ²μ 보λ μ¬λμ 'E'κ° λ¬΄μμ μλ―Ένλμ§ μ μ μλ€. μ΄κ² μ€λ₯(Error)μ 'E' μΈμ§ μλλ©΄, μ΄λ ν λΉμ§λμ€ μ½λ κ° μ€ νλμΈ 'E' ( μλ₯Ό λ€μ΄ μΈμ΄ν€ 'EN'μ 'E' ) μΈμ§ λ§μ΄λ€. μ΄λ κ² μ 체λ₯Ό μ μ μλ 리ν°λ΄ κ°μ μ½λμ λ°μλλ κ±Έ λ§€μ§ λλ²λΌκ³ λΆλ₯Έλ€. λ§λ²μ²λΌ μλ―Έκ° μ¨κ²¨μ Έ μμ΄μ, μ½λ μ¬λμ΄ ν΄μνκΈ° μ΄λ ΅κΈ° λλ¬Έμ΄λ€. μ΄λ° κ²½μ° μμλ₯Ό νμ©νμ¬ μλ―Έλ₯Ό λΆμ¬ν΄ 보μ.
CONSTANTS c_error TYPE zstatus VALUE 'E'.
μ΄μ 'E'κ° μλ¬ μνλ₯Ό μλ―Ένλ€λ κ²μ μ μ μλ€.
βοΈ λ§€μ§ λλ²(Magic Number)μ νλμ½λ©(Hard Coding)μ λ€λ₯Έ κ±ΈκΉ?
κ²°λ‘ λΆν° λ§νμλ©΄ λ§€μ§ λλ²λ νλμ½λ©μ μΌμ’ μ΄μ§λ§, λͺ¨λ νλμ½λ©μ΄ λ§€μ§ λλ²λ μλλ€.
π νλμ½λ©(Hard Coding) = κ° μ§μ μ λ ₯
νλμ½λ©μ κ°μ λ³μλ μμλ‘ μΆμΆνμ§ μκ³ μ½λμ μ§μ μ¨λ£λ κ²μ λ§ν¨. (μλ―Έλ₯Ό μ μ μμ)
πλ§€μ§ λλ²(Magic Number) = μλ―Έ μλ νλμ½λ©
νλμ½λ©μ΄μ§λ§ μλ―Έλ₯Ό μ μ μμ.
2. κ°μ νλͺ©μ μμλ€λΌλ¦¬ κ·Έλ£Ήν νμ¬ λ¬Άμ΄μ μ¬μ©νμ. (Grouping)
β Bad Case
CONSTANTS:
c_success TYPE sy-msgty VALUE 'S',
c_error TYPE sy-msgty VALUE 'E',
c_kr TYPE sy-langu VALUE '3',
c_en TYPE sy-langu VALUE 'E'.
β Good Case
CONSTANTS:
BEGIN OF cs_status,
success TYPE sy-msgty VALUE 'S',
error TYPE sy-msgty VALUE 'E',
END OF cs_status,
BEGIN OF cs_language,
kr TYPE sy-langu VALUE '3',
en TYPE sy-langu VALUE 'E'.
END OF cs_language.
- μλ―Έμ λ§₯λ½μ΄ λͺ ν : λ¨μΌ μμλ μ΄λ¦λ§ λ³΄κ³ μ©λλ₯Ό μ μΆν΄μΌ νμ§λ§, κ·Έλ£Ή μ΄λ¦μ΄ λΆμΌλ©΄ 무μμ λν μμμΈμ§ λͺ ννκ² μ μ μλ€.
- κ°λ μ± ν₯μ : μμκ° κ΄λ ¨ μ£Όμ λ³λ‘ μ 리λμ΄ μκΈ° λλ¬Έμ μ½λλ₯Ό μ½λ μ¬λμ΄ μ 체 μμ ꡬ쑰λ₯Ό μ½κ² μ΄ν΄ν μ μλ€.
- μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μ ν₯μ : νλμ ꡬ쑰 μμ μ μν΄ λλ©΄, μμ μΆκ°, μμ , μμ μ κ΄λ¦¬κ° μ½κ³ , ꡬ쑰μ μΌλ‘ μ°κ²°λμ΄ μμ΄ μ€λ³΅ λ°©μ§ λ° μ€λ₯ κ°λ₯μ± κ°μλλ€.
3. μ΄κ±°ν ν΄λμ€ (Enumeration Class)λ₯Ό νμ©νμ.
μμλ₯Ό λ¬Άλ λ μ§λ³΄λ λ°©μμ΄ λ°λ‘ μ΄κ±°ν ν΄λμ€μ΄λ€. μ΄ ν΄λμ€λ λ¨μν κ°λ§ κ°μ§λ κ² μλλΌ, λΉκ΅λ λ³νμ μν λ©μλλ ν¨κ» ν¬ν¨ν μ μμ΄ νμ₯μ±κΉμ§ κ°μΆμλ€.
CLASS zcl_example_enum DEFINITION PUBLIC ABSTRACT FINAL.
PUBLIC SECTION.
CONSTANTS:
BEGIN OF category,
food TYPE c VALUE 'F',
drink TYPE c VALUE 'D',
END OF category.
CLASS-METHODS get_description
IMPORTING value TYPE c
RETURNING VALUE(text) TYPE string.
ENDCLASS.
βοΈ μ΄κ±°ν ν΄λμ€(Enumeration Class)λ?
νΉμ ν κ°λ€μ μ§ν©μ 미리 μ μν΄ λκ³ , μλ―Έ μλ μ΄λ¦μΌλ‘ κ΄λ¦¬νλ ν΄λμ€μ΄λ€. μ΄ ν΄λμ€λ μμ(Constant)μ²λΌ κ°μ μ μ₯νμ§λ§, κ·Έμ κ°λ§ μ μ₯νλ κ² μλλΌ μΆκ°λ‘ λ©μλλ κ°μ§ μ μκ³ , νμ μμ μ±(type safety)λ λμΌ μ μλ€.
β CLASS ... ABSTRACT FINALλ‘ μ μΈ
β CONSTANTS μμ BEGIN OF ... κ΅¬μ‘°λ‘ λ¬ΆκΈ°
β (μ΅μ ) CLASS-METHODSλ‘ λ©μλ μΆκ°
'ABAP Implimentation (π οΈμ€λ¬΄) > Clean ABAP' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| ABAP Clean Code : λ³μμ 리ν°λ΄ - Boolean (True or False) (0) | 2025.05.08 |
|---|---|
| ABAP Clean Code : λ³μμ 리ν°λ΄(Variables and Literals) - λ¬Έμμ΄(String) (0) | 2025.05.07 |
| ABAP Clean Code : λ³μμ 리ν°λ΄ - λ³μ(Variables) (0) | 2025.04.21 |
| ABAP Clean Code : Naming μ’μ μ΄λ¦ μ§κΈ° 2νΈ (0) | 2025.04.16 |
| ABAP Clean Code : Naming μ’μ μ΄λ¦ μ§κΈ° 1νΈ (0) | 2025.04.15 |