Locality of Behaviour (LoB)

Carson Gross

β€œμœ μ§€ 보수λ₯Ό μ‰½κ²Œ ν•˜λŠ” μ£Όμš” κΈ°λŠ₯은 μ§€μ—­μ„±μž…λ‹ˆλ‹€. 지역성은 μ†ŒμŠ€ μ½”λ“œμ˜ μž‘μ€ λΆ€λΆ„λ§Œμ„ 보고도 ν•΄λ‹Ή μ†ŒμŠ€λ₯Ό 이해할 수 있게 ν•΄μ£ΌλŠ” νŠΉμ„±μž…λ‹ˆλ‹€.” – λ¦¬μ²˜λ“œ κ°€λΈŒλ¦¬μ—˜

#LoB 원칙

ν–‰λ™μ˜ 지역성(Locality of Behaviour, LoB)은 λ‹€μŒκ³Ό 같은 μ›μΉ™μž…λ‹ˆλ‹€:

μ½”λ“œ λ‹¨μœ„μ˜ λ™μž‘μ€ ν•΄λ‹Ή μ½”λ“œ λ‹¨μœ„λ§Œμ„ 보고도 μ΅œλŒ€ν•œ λͺ…ν™•ν•˜κ²Œ 이해할 수 μžˆμ–΄μ•Ό ν•œλ‹€.

#λ…Όμ˜

LoB 원칙은 λ¦¬μ²˜λ“œ κ°€λΈŒλ¦¬μ—˜μ˜ μΈμš©λ¬Έμ—μ„œ λ‚˜μ˜¨ λ‹¨μˆœν•œ 처방적 κ³΅μ‹μž…λ‹ˆλ‹€. κ°€λŠ₯ν•œ ν•œ, 그리고 λ‹€λ₯Έ 고렀사항듀과 κ· ν˜•μ„ λ§žμΆ”λ©΄μ„œ, κ°œλ°œμžλ“€μ€ μ½”λ“œ μš”μ†Œμ˜ λ™μž‘μ„ λͺ…ν™•ν•˜κ²Œ ν•˜λ €κ³  λ…Έλ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

HTMLμ—μ„œ 두 가지 λ‹€λ₯Έ AJAX μš”μ²­ κ΅¬ν˜„ 방식을 κ³ λ €ν•΄λ΄…μ‹œλ‹€. 첫 λ²ˆμ§ΈλŠ” htmxλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μž…λ‹ˆλ‹€:

<button hx-get="/clicked">Click Me</button>

두 λ²ˆμ§ΈλŠ” jQueryλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μž…λ‹ˆλ‹€:

  $("#d1").on("click", function(){
    $.ajax({
         /* AJAX μ˜΅μ…˜λ“€... */
    });
  });
<button id="d1">Click Me</button>

첫 번째 κ²½μš°μ—μ„œ button μš”μ†Œμ˜ λ™μž‘μ€ λͺ…ν™•ν•˜κ²Œ λ“œλŸ¬λ‚˜λ©°, LoB 원칙을 μΆ©μ‘±ν•©λ‹ˆλ‹€.

두 번째 κ²½μš°μ—μ„œλŠ” button μš”μ†Œμ˜ λ™μž‘μ΄ μ—¬λŸ¬ νŒŒμΌμ— λΆ„μ‚°λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ²„νŠΌμ΄ μ •ν™•νžˆ μ–΄λ–€ λ™μž‘μ„ ν•˜λŠ”μ§€ μ•ŒκΈ° μœ„ν•΄μ„œλŠ” μ½”λ“œ 베이슀 전체λ₯Ό 이해해야 ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ β€œκ±°λ¦¬μ˜ μŠ€ν‘Έν‚€ μ•‘μ…˜β€œμ€ μœ μ§€λ³΄μˆ˜ 문제의 원인이 되며, κ°œλ°œμžλ“€μ΄ μ½”λ“œ 베이슀λ₯Ό μ΄ν•΄ν•˜λŠ” 데 λ°©ν•΄κ°€ λ©λ‹ˆλ‹€.

htmx μ˜ˆμ‹œλŠ” 쒋은 ν–‰λ™μ˜ 지역성을 보여주며, jQuery μ˜ˆμ‹œλŠ” λ‚˜μœ ν–‰λ™μ˜ 지역성을 λ³΄μ—¬μ€λ‹ˆλ‹€.

#λ™μž‘ λ…ΈμΆœ vs. κ΅¬ν˜„ 인라인화

ν–‰λ™μ˜ 지역성에 λŒ€ν•œ 일반적인 λ°˜λŒ€ μ˜κ²¬μ€, 이것이 μ½”λ“œ λ‹¨μœ„ λ‚΄μ—μ„œ κ΅¬ν˜„ μ„ΈλΆ€ 사항을 μΈλΌμΈν™”ν•˜μ—¬ μ½”λ“œ λ‹¨μœ„λ₯Ό 덜 좔상적이고 더 μ·¨μ•½ν•˜κ²Œ λ§Œλ“ λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν–‰λ™μ˜ κ΅¬ν˜„μ„ μΈλΌμΈν™”ν•˜λŠ” 것과 ν–‰λ™μ˜ 호좜(λ˜λŠ” μ„ μ–Έ)을 μΈλΌμΈν™”ν•˜λŠ” 것은 μ€‘μš”ν•œ 차이가 μžˆλ‹€λŠ” 점을 μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ ν•¨μˆ˜λŠ” μ„ μ–Έκ³Ό 호좜 지점이 κ΅¬λΆ„λ©λ‹ˆλ‹€. 쒋은 ν•¨μˆ˜λŠ” κ΅¬ν˜„ μ„ΈλΆ€ 사항을 μΆ”μƒν™”ν•˜μ§€λ§Œ, λ˜ν•œ λͺ…ν™•ν•œ λ°©μ‹μœΌλ‘œ ν˜ΈμΆœλ˜μ–΄ 거리의 μŠ€ν‘Έν‚€ μ•‘μ…˜ 없이 λ™μž‘ν•©λ‹ˆλ‹€.

μš”μ†Œμ˜ λ™μž‘μ„ λͺ…ν™•ν•˜κ²Œ ν•˜λŠ” 것은, 쑰건이 λ™μΌν•˜λ‹€λ©΄, 쒋은 μΌμ΄μ§€λ§Œ, μ΅œμ’… κ°œλ°œμžμ™€ 특히 ν”„λ ˆμž„μ›Œν¬ κ°œλ°œμžλŠ” LoBλ₯Ό μ‰½κ²Œ μœ μ§€ν•˜κ³  κ°œλ…μ μœΌλ‘œλ„ κΉ”λ”ν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ λ…Έλ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

#λ‹€λ₯Έ 개발 μ›μΉ™κ³Όμ˜ 좩돌

LoBλŠ” μ’…μ’… λ‹€λ₯Έ μ†Œν”„νŠΈμ›¨μ–΄ 개발 원칙듀과 μΆ©λŒν•©λ‹ˆλ‹€. μ€‘μš”ν•œ 두 가지 원칙은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

#κ²°λ‘ 

LoBλŠ” μ½”λ“œ 베이슀λ₯Ό 더 인간적이고 μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“œλŠ” 주관적인 μ†Œν”„νŠΈμ›¨μ–΄ 섀계 μ›μΉ™μž…λ‹ˆλ‹€. λ‹€λ₯Έ 섀계 μ›μΉ™λ“€κ³Όμ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„κ°€ ν•„μš”ν•˜λ©°, μ½”λ“œ λ‹¨μœ„κ°€ μž‘μ„±λœ μ‹œμŠ€ν…œμ˜ μ œν•œ 사항을 κ³ λ €ν•΄μ•Ό ν•˜μ§€λ§Œ, μ‹€μš©μ μΌ 수 μžˆλŠ” ν•œ 이 원칙을 μ€€μˆ˜ν•˜λ©΄ μ†Œν”„νŠΈμ›¨μ–΄μ˜ μœ μ§€λ³΄μˆ˜μ„±, ν’ˆμ§ˆ, 지속 κ°€λŠ₯성을 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

</>