Coding Conventions

λ°•μ’…ν˜ΈΒ·2024λ…„ 1μ›” 25일
0

Git/Github

λͺ©λ‘ 보기
3/3
post-thumbnail
πŸ€” 가독성 μ’‹κ³  κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•œ, μ½”λ”© μ»¨λ²€μ…˜μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ³  μ μš©ν•΄λ³΄μž!

1. μ½”λ”© μ»¨λ²€μ…˜μ΄λž€

μ½”λ”© μ»¨λ²€μ…˜(Coding Convention)μ΄λž€ ν”„λ‘œκ·Έλž˜λ¨Έλ“€ μ‚¬μ΄μ—μ„œ 정해놓은 μ½”λ“œ μž‘μ„± κ·œμΉ™ 을 λ§ν•©λ‹ˆλ‹€.
μ»¨λ²€μ…˜μ„ μ§€μΌœμ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ μ½”λ“œμ˜ 가독성을 μ¦κ°€μ‹œν‚€κ³ , μ—¬λŸ¬λͺ…이 ν˜‘μ—…ν•  λ•Œ μΌκ΄€λœ μ½”λ“œ μŠ€νƒ€μΌμ„ μœ μ§€ν•  수 μžˆμ–΄μ„œ 관리가 μš©μ΄ν•˜κΈ° λ•Œλ¬Έμ— 개발자 ν˜‘μ—…μ—μ„œ ꡉμž₯히 μ€‘μš”ν•œ λΆ€λΆ„μž…λ‹ˆλ‹€.

2. μ½”λ”© μ»¨λ²€μ…˜ μ§€ν‚€λŠ” 방법

IDEλ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같은 단좕 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ”© μ»¨λ²€μ…˜μ„ μžλ™ν™”(ν¬λ§·νŒ…)ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 보톡 κ³΅λ°±μˆ˜μ •, import 포맷 μˆ˜μ •, κ°œν–‰ λ“±μ˜ μˆ˜μ •μ„ ν•΄μ€λ‹ˆλ‹€.

  • Intellij : ctrl + alt + L
  • Eclipse : ctrl + shift + f

Intellij μ—μ„œ Java μ½”λ”© μ»¨λ²€μ…˜ μ μš©ν•˜κΈ°

μ½”λ”©μ»¨λ²€μ…˜μ„ μ μš©ν•˜κΈ° μœ„ν•΄ ν˜„μ—…μ—μ„œλŠ” 정적 μ½”λ“œ 뢄석 도ꡬ(ex. SonarQube)λ₯Ό 두기도 ν•˜κ³ , 각 둜컬 IDEν™˜κ²½μ—μ„œ Checkstyle 같은 도ꡬλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

그럼 Javaμ—μ„œ 많이 μ‚¬μš©ν•˜λŠ” 넀이버 μ½”λ”© μ»¨λ²€μ…˜μ„ Intellijμ—μ„œ μ μš©ν•΄λ΄…μ‹œλ‹€.

  1. formatterλ₯Ό λ‹€μš΄λ‘œλ“œν•΄μ€λ‹ˆλ‹€
    naver-intelij-formatter.xml νŒŒμΌμ„ μ•„λž˜ μ‚¬μ΄νŠΈλ‘œ μ΄λ™ν•˜μ—¬ λ°›μ•„λ‘κ² μŠ΅λ‹ˆλ‹€!
    https://github.com/naver/hackday-conventions-java/tree/master/rule-config

  2. Preferences μ„€μ •μœΌλ‘œ λ“€μ–΄κ°€μ„œ code style을 μ°ΎμŠ΅λ‹ˆλ‹€.


    Scheme: Default IDE둜 λ˜μ–΄μžˆλŠ” λΆ€λΆ„μ—μ„œ 였λ₯Έμͺ½μ— μžˆλŠ” ν†±λ‹ˆλ°”ν€΄ μ•„μ΄μ½˜μ„ λˆ„λ₯΄κ³  μœ„μ—μ„œ λ‹€μš΄λ°›μ•˜λ˜ naver-intellij-formatter을 μ›ν•˜λŠ” μ΄λ¦„μœΌλ‘œ λ“±λ‘ν•˜λ©΄ λ©λ‹ˆλ‹€.

OK λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ•„λž˜μ™€κ°™μ΄ naver-coding-convention으둜 등둝이 된 것을 ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.
λ²ˆμ™Έλ‘œ, IDEμ—μ„œ μ½”λ“œλ₯Ό μ €μž₯ν•  λ•Œλ§ˆλ‹€ μ»¨λ²€μ…˜μ„ μ μš©ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. μ½”λ“œ μ €μž₯μ‹œ μ»¨λ²€μ…˜ 적용 μžλ™ν™”
  • Preferences > β€˜actions on save’ 검색
  • Reformat code 체크 : μ½”λ“œ ν¬λ§·νŒ…μ„ μ €μž₯ν•  λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ ν•΄μ€λ‹ˆλ‹€.
  • Optimize imports 체크 : classμ—μ„œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” importλ₯Ό μžλ™μœΌλ‘œ μ§€μ›Œμ€λ‹ˆλ‹€.
  1. checkStyle 적용
    Preferences > Plugins 검색 > checkstyle κ²€μƒ‰ν•˜μ—¬ CheckStyle-IDEA Install λ²„νŠΌμ„ λˆ„λ¦…λ‹ˆλ‹€.
    μ„€μΉ˜ ν›„μ—λŠ” μž¬μ‹œμž‘μ„ ν•΄μ£Όμ–΄μ•Ό 적용이 λ©λ‹ˆλ‹€.
    μž¬μ‹œμž‘μ„ ν•˜κ³ λ‚˜λ©΄ μ•„λž˜ μ΄λ―Έμ§€μ²˜λŸΌ Tools ν•˜μœ„μ— Checkstyle 탭이 μƒμ„±λ˜μ–΄μžˆμ„κ²λ‹ˆλ‹€.

λ§Œμ•½ Treat Checkstyle errors as warnings λ₯Ό 체크해주면 μ•žμœΌλ‘œ μ½”λ”©ν•  λ•Œ 포맷에 λ§žμ§€ μ•Šμ€ μŠ€νƒ€μΌμ΄ μžˆμ„ κ²½μš°μ—λŠ” IDEμ—μ„œ warnings둜 ν‘œμ‹œν•΄μ€λ‹ˆλ‹€. ν•„μš”ν•˜λ‹€λ©΄ 체크λ₯Ό ν•΄μ£Όμ„Έμš”.
그리고 + λ²„νŠΌμ„ λˆŒλŸ¬μ„œ μœ„μ—μ„œ λ‹€μš΄λ°›μ•˜λ˜ rules.xml νŒŒμΌμ„ μΆ”κ°€ν•΄μ£Όκ³  next둜 λ„˜μ–΄κ°‘λ‹ˆλ‹€.

여기에 naver-checkstyle-suppressions.xmlλ₯Ό μž…λ ₯ν•΄μ€„κ²Œμš”.
Nextλ₯Ό λˆ„λ₯΄λ©΄ λ‹€μŒκ³Ό 같이 ready to add μƒνƒœκ°€ λ©λ‹ˆλ‹€. Finishλ₯Ό λˆ„λ₯΄κ³  μ™„λ£Œν•΄μ€„κ²Œμš”.
5. 확인해보기
CheckStyle ν”ŒλŸ¬κ·ΈμΈ μ„€μΉ˜λ₯Ό ν–ˆλ‹€λ©΄ 상단 바에 Tool Windows > CheckStyle 탭이 μƒκ²Όμ„κ²λ‹ˆλ‹€.
λˆŒλŸ¬μ£Όμ‹œλ©΄ IDE ν•˜λ‹¨μ— CheckStyle > Scanμ—μ„œ μ½”λ”©μ»¨λ²€μ…˜ 였λ₯˜λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

3. μ½”λ”© μ»¨λ²€μ…˜ μ’…λ₯˜

μ»¨λ²€μ…˜μ€ μ‘°μ§μ›λ“€κ°„μ˜ 약속이기 λ•Œλ¬Έμ— 각 λΆ€μ„œ ν˜Ήμ€ νšŒμ‚¬λ§ˆλ‹€ λ‹€λ₯Ό 수 μžˆλŠ”λ°μš”, μ–΄λŠμ •λ„ ν†΅μš©λ˜λŠ” κ°€μ΄λ“œλΌμΈμ€ μžˆμ–΄μ„œ 같은 μ–Έμ–΄ μ•ˆμ—μ„œλŠ” 크게 차이가 λ‚˜μ§„ μ•ŠμŠ΅λ‹ˆλ‹€. 각 νšŒμ‚¬λ§ˆλ‹€ μ •μ˜ν•˜λŠ” μ½”λ”© μ»¨λ²€μ…˜ λ¬Έμ„œλ₯Ό μ°Έκ³ ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

Google Java Style Guide

Google Java Style Guide

넀이버 캠퍼슀 핡데이 Java Coding Convention

캠퍼슀 핡데이 Java μ½”λ”© μ»¨λ²€μ…˜

NHN Coding Convention for Markup Languages (HTML/CSS)

https://nuli.navercorp.com/data/convention/NHN_Coding_Conventions_for_Markup_Languages.pdf

profile
HeyπŸ–οΈ

0개의 λŒ“κΈ€