μ΄ κΈμ γClean ABAP – A Style Guide for Developersγ μμ (written by Klaus Haeuptle, Florian Hoffmann, Rodrigo Jordão, Michel Martin, Anagha Ravinarayan, Kai Westerholz) μ μ°Έκ³ νμ¬ μμ±νμμ΅λλ€. ν΄λΉ λ΄μ©μ μ’ λ μ½κ³ μ΄ν΄ν μ μλλ‘ μμ½/μ 리 λ° κ°μΈμ μΈ μ견μ λΆμ¬ μ¬κ΅¬μ±ν ν¬μ€ν μ λλ€.
4. ν΄λμ€λ λͺ μ¬λ₯Ό λ©μλμλ λμ¬λ₯Ό μ¬μ©νμ.
- ν΄λμ€(CLASS)λ κ°μ²΄ κ·Έ μ체λ₯Ό νννκΈ° λλ¬Έμ λͺ μ¬ λλ λͺ μ¬κ΅¬(Noun phrase)λ₯Ό μ¬μ©νμ¬ μ΄λ¦μ μ§λλ€. ν΄λμ€ μ΄λ¦μ 무μ(what)μ λνλ΄λμ§ λͺ νν΄μΌ νλ€.
β Bad Case
CLASS manage_customer → ν΄λμ€λ λμ¬λ‘ μμνλ©΄ μ λ¨
CLASS read_sales_orders → λμ¬λ λ©μλμμ μ°λ κ²μ΄ μ μ
β Good Case
CLASS customer_manager → κ³ κ° μ 보λ₯Ό κ΄λ¦¬νλ ν΄λμ€
CLASS log_manager → λ‘κ·Έλ₯Ό κ΄λ¦¬νλ ν΄λμ€
- λ©μλ(METHODS)λ κ°μ²΄κ° μνν μ μλ νλμ΄λ κΈ°λ₯, μμ (action)μ λνλ΄λ―λ‘, νμ λμ¬ λλ λμ¬κ΅¬(Verb phrase)λ‘ μ΄λ¦ μ§λλ€.
β Bad Case
METHODS customer_data → λμ¬κ° μμ
METHODS message_adder → λͺ μ¬λ‘ λ©μλλ₯Ό μ μνλ©΄ μ λ¨
β Good Case
METHODS get_customer_info → κ³ κ° λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ©μλ
METHODS add_message → λ©μμ§λ₯Ό μΆκ°νλ λ©μλ
- λ°νκ°μ΄ Boolean(True or False)μΈ λ©μλλ is λλ has κ°μ λμ¬λ‘ μμνλ©΄ λμ± μ½κΈ° μ½λ€. μ§λ¬Έ ννλ‘ μ½νλλ‘ λ§λλ κ²μ΄ κ°λ μ± μΈ‘λ©΄μμ ν¨κ³Όμ μ΄κΈ° λλ¬Έμ΄λ€.
β Bad Case
METHODS empty → μλ―Έκ° λͺ ννμ§ μμ
METHODS approval_status → μνλ₯Ό λ»νλ λͺ μ¬λ νΌλ μ λ°
β Good Case
METHODS has_approval → μ£Όλ¬Έμ΄ μΉμΈλμλμ§ νμΈνλ λ©μλ
μμ:
IF order->has_approval( ).
" μΉμΈλ μ£Όλ¬Έ μ²λ¦¬
ENDIF.
π‘ν¨μ(Function) λν λ©μλ(Method)μ λμΌνκ² νλμ λνλ΄λ―λ‘, λμ¬ ννλ‘ μ΄λ¦ μ§λ κ² λ°λμ§νλ€.
5. Noisy Words ( μμ λ¨μ΄ )λ νΌνμ.
μμ λ¨μ΄λ λ³μλͺ
μ΄λ λ©μλλͺ
λ±μ μμ£Ό μ°μ΄μ§λ§, μ€μ λ‘λ μλ¬΄λ° μλ―Έλ κ°μΉλ₯Ό μ λ¬νμ§ λͺ»νλ λ¨μ΄λ₯Ό λ§νλ€.
λ§ κ·Έλλ‘ "μμ΄λ λλ λ¨μ΄", λλ "μ½λμ νλ¦μ λ°©ν΄νλ λ¨μ΄"μ΄λ€.
Noisy Word | μλ―Έ μλ μ΄μ |
data | λ³μλκΉ λΉμ°ν λ°μ΄ν°μ → λΆνμ |
object | ν΄λμ€λ ꡬ쑰λ λ€ κ°μ²΄λκΉ μλ―Έ μμ |
value | λλΆλΆ λ³μλ κ°μ κ°μ§λκΉ μλ―Έ μμ |
var, variable | λ³μλͺ μ λ "λ³μ"λΌκ³ μ°λ 건 μ€λ³΅ |
β Bad Case
DATA alv_grid_object TYPE REF TO cl_gui_alv_grid.
DATA max_count_value TYPE i.
β Good Case
DATA alv_grid TYPE REF TO cl_gui_alv_grid .
DATA max_count TYPE i.
6. μΌκ΄λ μ©μ΄λ₯Ό μ μ§νμ.
λΉμ·ν μν μ νλ μλΈλ£¨ν΄ μ΄μ§λ§ read, get, make λ± μ©μ΄κ° μ κ°κ°μ΄λ©΄ ν·κ°λ¦°λ€.
β Bad Case
PERFORM make_billing.
PERFORM read_order.
PERFORM get_documents.
β Good Case
PERFORM read_billing.
PERFORM read_order.
PERFORM read_documents.
π λμμ΄λΌλ νλλ‘ ν΅μΌνλ©΄ κ°λ μ±μ΄ λμμ§λ©°, μΌκ΄μ± μλ μμ€ μ½λκ° λμ΄ κΉλν΄μ§λ€.
7. μ΄μ νμνμ§ μμ νκ°λ¦¬ νκΈ°λ²
νκ°λ¦¬ νκΈ°λ²(Hungarian Notation)μ νλ‘κ·Έλλ°μμ λ³μ μ΄λ¦ μμ κ·Έ λ³μμ 'μλ£ν'μ΄λ 'μλ'λ₯Ό λνλ΄λ μ λμ΄(prefix)λ₯Ό λΆμ΄λ λ°©μμ λ§νλ€. μμ μλ μ½λ νΈμ§κΈ°κ° μ§κΈμ²λΌ λλνμ§ μμκΈ° λλ¬Έμ, λ³μ μ΄λ¦λ§ λ³΄κ³ μλ£νμ ꡬλΆνλ κ² μ€μνμλ€. λ°λΌμ lv_, iv_, ev_ κ°μ μ λμ΄λ‘ λ³μ μν μ ꡬλΆνμλ€.
π νλ κ°λ°μμμ λ¨μ
1. IDEκ° μλ£νμ λ°λ‘ 보μ¬μ£ΌκΈ° λλ¬Έμ κ΅³μ΄ λΆμΌ νμκ° μμ
- ADT(ABAP Development Tools)λ Eclipse κ°μ λꡬλ₯Ό μ°λ©΄ λ§μ°μ€λ§ μ¬λ €λ νμ μ΄ λμ¨λ€.
2. μ΄λ¦μ΄ κΈΈμ΄μ§κ³ μλ―Έ μ λ¬μ΄ νλ €μ§
- lv_total_amount 보λ€λ κ·Έλ₯ total_amount κ° λ κΉλνκ³ λͺ νν μ μλ€.
3. μ½λ 리ν©ν λ§ μ νΌλ μ λ°
- μ€λ¬΄μμ νν μ ν μ μλ λ¬Έμ λ‘ "G"(κΈλ‘λ²) "L"(λ‘컬) μ λμ΄λ₯Ό μμ νμ§ μμ μλͺ» μ¬μ©λλ λ± λ³μ νμ μ΄ λ°λμλλ° μ λμ΄λ κ·Έλλ‘ λλ©΄, μ€νλ € μλͺ»λ μ λ³΄κ° λλ€.
β Bad Case
DATA: lv_total_amount TYPE p DECIMALS 2,
iv_quantity TYPE i,
ev_result TYPE p DECIMALS 2.
β Good Case
DATA: total_amount TYPE p DECIMALS 2,
quantity TYPE i,
result TYPE p DECIMALS 2.
βοΈ νκ°λ¦¬ νκΈ°λ²μ νΌνλ κ²μ΄ μ λ§ μ’μ λ°©λ²μΌκΉ?
λ¬Όλ‘ , μμ§κΉμ§λ λ§μ νλ‘μ νΈλ μμ€ν μμλ SAP GUIλ₯Ό μ€μ¬μΌλ‘ κ°λ°νλ κ²½μ°κ° λ§κ³ , Eclipse κΈ°λ°μ ADT(ABAP Development Tools)λ μΌλΆ νκ²½μμλ§ μ¬μ©λκ³ μλ κ²μ΄ νμ€μ΄λ€. κ·Έλ κΈ° λλ¬Έμ νκ°λ¦¬ νκΈ°λ²μ λν νΈλΆνΈλ μ¬μ ν μ‘΄μ¬νκ³ , μ΄λ€ κ°λ° νκ²½μ΄λμ λ°λΌ κ·Έ μ€μ©μ±λ λ¬λΌμ§ μ μλ€.
πκ²°λ‘ μ μΌλ‘, κ°λ° νμ ν©μμ μν©μ λ°λΌ μ μ°νκ² μ μ©νλ κ²μ΄ κ°μ₯ λ°λμ§νλ€.
π ADTλ₯Ό μ¬μ©νλ€λ©΄, νκ°λ¦¬ νκΈ°λ² μμ΄λ μΆ©λΆν μλ―Έ μ λ¬μ΄ κ°λ₯νκ³ μ½λκ° λ κΉλ.
π SAP GUI νκ²½μ΄λΌλ©΄, μ λμ΄λ‘ μν μ ꡬλΆν΄ μ£Όλ κ²μ΄ μ€μ©μ μΌ μλ μμ.