Java

[Java] 효율적인 λ¬Έμžμ—΄ 검사: isEmpty()와 isBlank() μ‚¬μš©ν•˜κΈ°

9taetae9 2024. 9. 7. 18:33
728x90

Java κ°œλ°œμ„ ν•˜λ‹€ 보면 λ¬Έμžμ—΄μ΄ λΉ„μ–΄μžˆλŠ”μ§€ λ˜λŠ” 곡백만 ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ 확인해야 ν•˜λŠ” κ²½μš°κ°€ 자주 μžˆλ‹€. 이런 μƒν™©μ—μ„œ μ–΄λ–€ 방법을 μ‚¬μš©ν•˜λŠ” 것이 κ°€μž₯ νš¨μœ¨μ μΌμ§€ String.isEmpty()와 String.isBlank() λ©”μ†Œλ“œμ˜ μ‚¬μš©μ„ ꢌμž₯ν•˜λŠ” μ΄μœ μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ €κ³ ν•œλ‹€. 

문제: λΉ„νš¨μœ¨μ μΈ λ¬Έμžμ—΄ 길이 체크

ν‰μ†Œ λ¬Έμžμ—΄μ΄ λΉ„μ–΄μžˆλŠ”μ§€ 확인할 λ•Œ 별 생각없이 isEmpty, length()λ₯Ό ν˜Όμš©ν•˜λ©° 코딩을 ν–ˆλ‹€.

if (string.length() == 0)
if (string.length() > 0)
if (string.trim().length() == 0)
if (string.trim().length() > 0)

 

μ΄λŸ¬ν•œ 방식은 μž‘λ™μ€ ν•˜μ§€λ§Œ μ•„λž˜μ™€ 같은 λ¬Έμ œκ°€ μžˆλ‹€.

  1. γ„Ήμ½”λ“œκ°€ λΆˆν•„μš”ν•˜κ²Œ κΈΈμ–΄μ§„λ‹€.
  2. trim() 호좜 μ‹œ, μƒˆλ‘œμš΄ String 객체가 μƒμ„±λ˜κ³  길이가 0인지 ν™•μΈλœ λ’€ λ‹€μ‹œ λ²„λ €μ§€κ²Œ λœλ‹€. (λΆˆν•„μš”ν•œ λ©”λͺ¨λ¦¬ μ‚¬μš©)
  3. μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ μ „λ‹¬ν•˜μ§€ λͺ»ν•œλ‹€. 

ν•΄κ²°μ±…: isEmpty()와 isBlank() μ‚¬μš©ν•˜κΈ°

Javaμ—μ„œλŠ” 이런 상황을 μœ„ν•΄ 더 λͺ…ν™•ν•˜κ³  효율적인 λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•œλ‹€.

1. isEmpty()

isEmpty()λŠ” λ¬Έμžμ—΄μ˜ 길이가 0인지 ν™•μΈν•œλ‹€.

if (string.isEmpty())
if (!string.isEmpty())

2. isBlank()

isBlank()λŠ” λ¬Έμžμ—΄μ΄ λΉ„μ–΄μžˆκ±°λ‚˜ 곡백 문자만 ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•œλ‹€. (java 11 이후)

if (string.isBlank())
if (!string.isBlank())

μž₯점

  1. 가독성 ν–₯상: μ½”λ“œμ˜ μ˜λ„κ°€ 더 λͺ…ν™•ν•΄μ§„λ‹€.
  2. μ„±λŠ₯ κ°œμ„ : isBlank()의 경우, String 객체λ₯Ό μƒˆλ‘œ μƒμ„±ν•˜μ§€ μ•Šκ³  λ¬Έμžμ—΄μ„ μˆœνšŒν•˜λ©΄μ„œ 곡백문자만 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° λ•Œλ¬Έμ—  trim().length() == 0보닀 νš¨μœ¨μ μ΄λ‹€.
  3. κ°„κ²°μ„±: μ½”λ“œκ°€ 더 κ°„κ²°ν•΄μ Έ μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μ›Œμ§„λ‹€.

 

λ¬Όλ‘  μ•„λž˜μ™€ 같이 λ¬Έμžμ—΄μ˜ 길이가 0이 μ•„λ‹Œ 상황을 μ²΄ν¬ν•΄μ•Όλ˜λŠ” κ²½μš°μ—λŠ” length()λ₯Ό 직접 μ‚¬μš©ν•˜λŠ” 것이 μ μ ˆν•˜λ‹€.

if (string.length() > 1) if (string.trim().length() == 10)

 

 

μ•žμœΌλ‘œλŠ” isEmpty()와 isBlank()λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 상황인지 고민해보며 μ½”λ“œλ₯Ό μž‘μ„±ν•΄λ³΄λ €ν•œλ‹€.

 

 

 

 

 

 

μ°Έκ³  자료 : 

https://community.sonarsource.com/t/new-rule-to-suggest-string-length-0-string-isempty/98830

https://stackoverflow.com/questions/6828362/difference-between-string-isempty-and-string-equals

728x90