πŸ‡°πŸ‡·Β λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν•œκΈ€λ‘œ λ§Œλ“€μ–΄λ„ 될까?

Jaye HaΒ·2023λ…„ 11μ›” 29일
post-thumbnail

SCM ν”„λ‘œμ νŠΈ 개발 κ³Όμ •μ—μ„œ κ°€μž₯ μ–΄λ €μ› λ˜ 것 쀑 ν•˜λ‚˜λŠ” λ³€μˆ˜ 및 μ»΄ν¬λ„ŒνŠΈμ˜ 이름을 μ •ν•˜λŠ” μΌμ΄μ—ˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈμ˜ νŠΉμ„±μƒ β€œκ²¬μ μš”μ²­λ“±λ‘β€, β€œκ²¬μ ν’ˆ 곡정정보”와 같은 도메인 특유의 μš©μ–΄λ“€μ΄ 자주 λ“±μž₯ν–ˆλŠ”λ°, 이λ₯Ό μ˜μ–΄λ‘œ λ²ˆμ—­ν•˜μ—¬ ν”„λ‘œμ νŠΈμ— μ μš©ν•˜λ‹€ λ³΄λ‹ˆ 가독성과 생산성이 λ–¨μ–΄μ§€κ³  μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ €μ›Œμ‘ŒμŠ΅λ‹ˆλ‹€. 특히, μœ μ‚¬ν•œ 이름을 κ°€μ‘Œμ§€λ§Œ λ‹€λ₯Έ κΈ°λŠ₯을 κ°€μ§„ μ»΄ν¬λ„ŒνŠΈλ“€μ΄ λ§Žμ•„μ Έμ„œ ν˜‘μ—…ν•˜κ±°λ‚˜ μš”κ΅¬μ‚¬ν•­μ— λŒ€μ‘ν•˜λŠ” 것이 더 μ–΄λ €μ›Œμ‘ŒμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ β€œκ²¬μ ν’ˆκ³΅μ •μ™Έμ£Όμ²˜κ°’β€μ— λŒ€ν•œ μˆ˜μ • μš”μ²­μ΄ 생기면, κ°œλ°œμžλ“€μ€ ν•΄λ‹Ή μš©μ–΄μ˜ 영문 μ»΄ν¬λ„ŒνŠΈλͺ…이 무엇인지뢀터 생각해내야 ν–ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μš©μ–΄λ“€μ„ μ–΅μ§€λ‘œ μ˜μ–΄λ‘œ λ²ˆμ—­ν•˜λ‹€ λ³΄λ‹ˆ μ‹€μ œ SCM μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 직원듀쑰차 μƒμ†Œν•œ μš©μ–΄λ“€μ„ κ°œλ°œμ— μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆκ³ , νšŒμ‚¬ λ‚΄ μ‚¬μš© μš©μ–΄μ™€ 개발 μš©μ–΄ κ°„μ˜ 괴리가 μ‹¬ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이에, 싀무 ν™˜κ²½μ—μ„œλŠ” μ˜μ–΄ μ‚¬μš©μ΄ 거의 μ—†μŒμ—λ„ λΆˆκ΅¬ν•˜κ³  μ™œ 싀무와 동떨어진 μš©μ–΄λ“€λ‘œ ν”„λ‘œμ νŠΈλ₯Ό ꡬ성해야 ν•˜λŠ”μ§€ 의문이 λ“€κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈλͺ…을 ν•œκΈ€λ‘œ λ³€κ²½ν•˜λŠ” λ°©μ•ˆμ„ κ³ λ―Όν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. μ²˜μŒμ—λŠ” ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈκ°€ 쑰금 λ‚―μ„€κ³ , 특히 ν˜Έν™˜μ„± λ¬Έμ œκ°€ κ±±μ •λ˜μ–΄μ„œ μ—¬λŸ¬κ°€μ§€ 레퍼런슀λ₯Ό μ°Ύμ•˜μœΌλ‚˜, λ‹¨μˆœν•œ κ΅¬κΈ€λ§μœΌλ‘œλŠ” ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ— λŒ€ν•œ μ‹ λ’°ν•  λ§Œν•œ 자료λ₯Ό μ°ΎκΈ°κ°€ νž˜λ“€μ–΄μ„œ 직접 타당성 κ²€ν† λ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ 고렀사항

1. ν˜Έν™˜μ„± 및 인코딩 문제

ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ˜ κ°€μž₯ λ¨Όμ € κ±±μ •λœ 것은 μœ λ‹ˆμ½”λ“œ 문자 μ²˜λ¦¬μ™€ κ΄€λ ¨λœ ν˜Έν™˜μ„± λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. λ¬Όλ‘  λŒ€λΆ€λΆ„μ˜ 개발 ν™˜κ²½κ³Ό 도ꡬ듀이 μœ λ‹ˆμ½”λ“œλ₯Ό μ§€μ›ν•˜κΈ° λ•Œλ¬Έμ— 큰 λ¬Έμ œκ°€ 없을 것이라고 μ˜ˆμƒν–ˆκ³ , μ‹€μ œλ‘œ ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν…ŒμŠ€νŠΈν–ˆμ„ λ•Œ 이름이 κΉ¨μ§€κ±°λ‚˜ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” κ²½μš°λŠ” μ—†μ—ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ νŠΉμ • ν™˜κ²½μ΄λ‚˜ 였래된 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œλŠ” ν˜Έν™˜μ„± λ¬Έμ œκ°€ λ°œμƒν•  κ°€λŠ₯성이 μžˆμ„ μˆ˜λ„ μžˆλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

이와 κ΄€λ ¨ν•΄μ„œλŠ” μ§„μœ λ¦Όλ‹˜μ˜ μ‹€λ¬΄μ—μ„œ λ°”λ‘œ μ“°λŠ” Frontend Clean Code λ°œν‘œμ™€ ν† μŠ€μ—μ„œμ˜ ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš© 사둀λ₯Ό μ°Έκ³ ν–ˆμŠ΅λ‹ˆλ‹€. 이 사둀듀은 ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ΄ ν† μŠ€μ™€ 같은 λ³΅μž‘ν•˜κ³  큰 μ„œλΉ„μŠ€μ˜ μ‹€μ œ ν™˜κ²½μ—μ„œλ„ 문제 없이 적용되고 μžˆλ‹€λŠ” 것을 보여쀬고, 우리 ν”„λ‘œμ νŠΈμ—μ„œλ„ ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜λŠ”λ° 큰 μ§€μž₯이 μ—†λ‹€κ³  νŒλ‹¨ν–ˆμŠ΅λ‹ˆλ‹€. λ¬Όλ‘ , 였래된 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œμ˜ ν˜Έν™˜μ„± λ¬Έμ œλŠ” μ—¬μ „νžˆ 염두에 두어야 ν•  μˆ˜λ„ μžˆμ§€λ§Œ 이둜 인해 μ–»λŠ” 가독성 ν–₯상과 같은 이득이 더 크닀고 νŒλ‹¨ν–ˆμŠ΅λ‹ˆλ‹€.

2. κΈ°μ‘΄ μ½”λ”© μ»¨λ²€μ…˜(ESLint)과의 뢈일치

ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš© μ‹œ 또 λ‹€λ₯Έ λ¬Έμ œλŠ” κΈ°μ‘΄ ESLint κ·œμΉ™κ³Όμ˜ λΆˆμΌμΉ˜μ˜€μŠ΅λ‹ˆλ‹€. 특히 저희 ν”„λ‘œμ νŠΈμ˜ κ²½μš°μ—λŠ” react/jsx-pascal-case κ·œμΉ™μ— μ˜ν•΄ κ²½κ³ κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ eslint μ„€μ •μ—μ„œ κ·œμΉ™μ„ μ˜μ–΄μΌ κ²½μš°μ—λŠ” κ·ΈλŒ€λ‘œ κΈ°μ‘΄ κ·œμΉ™μ„ λ”°λ₯΄κ³ , ν•œκΈ€μ΄ ν¬ν•¨λœ κ²½μš°μ—λ§Œ κ·œμΉ™μ„ μ μš©ν•˜μ§€ μ•Šλ„λ‘ μ»€μŠ€ν…€ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ½”λ“œμ˜ 일관성을 μœ μ§€ν•˜λ©΄μ„œλ„ ν•œκΈ€ λͺ…λͺ…μ˜ μœ μ—°μ„±μ„ 확보할 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

{
  "rules": {
    "react/jsx-pascal-case": ["error", { "ignore": ["*[κ°€-힣]*"] }]
  }
}

3. μžλ™μ™„μ„±μ˜ 어렀움

ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš© μ‹œ μžλ™μ™„μ„± κΈ°λŠ₯에 λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” κ²½μš°λ„ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 특히 VSCode ν™˜κ²½μ—μ„œ μžλ™ import κΈ°λŠ₯이 μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” μ»΄ν¬λ„ŒνŠΈλͺ… μ•žμ— νšŒμ‚¬λͺ…μ˜ μ΄λ‹ˆμ…œμ„ λΆ™μ΄λŠ” λ°©μ‹μœΌλ‘œ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, "Jκ²¬μ ν’ˆλΆ„λ₯˜μ •보"와 같이 λͺ…λͺ…ν•¨μœΌλ‘œμ¨ μžλ™μ™„μ„± κΈ°λŠ₯을 μ›ν™œν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.


κ²°λ‘ 

μœ„ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ— λŒ€ν•΄ κ±΄μ˜ν•˜μ˜€κ³ , νŒ€κ³Όμ˜ λ…Όμ˜ 끝에 λ°±μ—”λ“œμ™€μ˜ 톡신에 ν•„μš”ν•œ 뢀뢄은 κΈ°μ‘΄ 방식을 μœ μ§€ν•˜λ˜ ν”„λ‘ νŠΈμ—”λ“œ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈμ˜ 이름은 ν•œκΈ€λ‘œ λ³€κ²½ν•˜κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. 특히 μ˜μ–΄λ‘œ λ²ˆμ—­ν–ˆμ„ λ•Œ μ˜λ―Έκ°€ λͺ…ν™•ν•˜μ§€ μ•Šκ±°λ‚˜ 괴리가 λ°œμƒν•˜λŠ” 경우 μƒˆλ‘œ λ§Œλ“œλŠ” μ»΄ν¬λ„ŒνŠΈμ— ν•œν•΄ μ μ§„μ μœΌλ‘œ μ μš©ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 결정은 ν”„λ‘œμ νŠΈμ— 긍정적인 영ν–₯을 λ―Έμ³€μŠ΅λ‹ˆλ‹€. ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈλͺ…을 μ‚¬μš©ν•¨μœΌλ‘œμ¨ 가독성이 크게 ν–₯μƒλ˜μ—ˆκ³ , κ°œλ°œμžλ“€μ΄ μ»΄ν¬λ„ŒνŠΈμ˜ κΈ°λŠ₯을 더 λΉ λ₯΄κ³  μ •ν™•ν•˜κ²Œ 이해할 수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, μ»΄ν¬λ„ŒνŠΈμ˜ ν•œκΈ€λͺ…κ³Ό κ΄€λ ¨ μš”μ²­μ‚¬ν•­μ˜ μ˜μ–΄λͺ…을 일일이 λ§€μΉ­ν•  ν•„μš”κ°€ μ—†μ–΄μ Έ 생산성도 μƒλ‹Ήνžˆ ν–₯μƒλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘ , ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ΄ μΌλ°˜μ μ΄μ§€ μ•ŠμœΌλ©° ꡭ제적인 접근성을 κ³ λ €ν•΄μ•Όν•˜κ±°λ‚˜ λ‹€μ–‘ν•œ ν˜‘μ—… ν™˜κ²½μ—μ„œλŠ” μ ν•©ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 저희 ν”„λ‘œμ νŠΈμ™€ 같이 λ³΅μž‘ν•œ 도메인 μš©μ–΄λ‘œ 인해 어렀움을 κ²ͺλŠ” κ²½μš°μ—λŠ” ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ„ μ§„μ§€ν•˜κ²Œ κ³ λ €ν•΄λ³Όλ§Œν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. ν˜Ήμ‹œ 저희와 λΉ„μŠ·ν•œ 이유둜 ν•œκΈ€ μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μ— λŒ€ν•΄ κ³ λ―Ό μ€‘μ΄μ‹œλΌλ©΄ 저희 사둀가 μ–΄λŠ 정도 μ°Έκ³ κ°€ λ˜μ—ˆμœΌλ©΄ ν•©λ‹ˆλ‹€. :)

profile
내일이 κΈ°λŒ€λ˜λŠ” 개발자 :)

0개의 λŒ“κΈ€