본문 바로가기
IOS

swift character의 isWhitespace(이름의 중요성?)

by 나이아카 2025. 1. 16.

 되게 간단한 글이 될 예정입니다. 아래 링크에 있는 메소드를 설명할 건데요.

https://developer.apple.com/documentation/swift/character/iswhitespace

 

isWhitespace | Apple Developer Documentation

A Boolean value indicating whether this character represents whitespace, including newlines.

developer.apple.com

 

이 글을 작성하게 된 계기도 되게 자그마합니다. 회사 코드리뷰에서 iOS 개발자분이 String의 확장함수로 isWhitespace라는 함수를 구현했는데, 이걸 본 다른 회사의 개발자분이 isWhitespace라는 네이밍이 이상하다는 의견이 있어서 큰 문제냐? vs 이상하지 않냐 로 이야기가 나왔었습니다. 그냥 그 상황이 되게 인상깊어서 남기는 글입니다.

 


 이 메소드의 설명은 아주 간단합니다. 캐릭터 형의 변수가 공백인지를 확인하는 메소드인데요. 그 공백의 경우 홈페이지에 의하면

  • “\t” (U+0009 CHARACTER TABULATION)
  • “ “ (U+0020 SPACE)
  • U+2029 PARAGRAPH SEPARATOR
  • U+3000 IDEOGRAPHIC SPACE

총 네 개를 포함하고 있음을 확인할 수 있습니다. 메소드의 말 그대로 문자의 공백을 확인하는 건데요. 공백이라고 치환되는 문구가 존재하는 경우 true를, 아닌 경우 false를 반환하고 있습니다.

 코드의 사용법은 아래와 같습니다.

let character: Character = " "
if(character.isWhitespace) {
	// 코드 작성
}

 Swift의 경우 Character형에 "" 처럼 아무것도 없는 빈 문자열은 넣을 수 없습니다. 정확히 말하자면 문자열에는 아무것도 없는 공백("")은 정의되어 있지 않아 오류를 일으키는 건데요. 이 경우에는 아예 아무것도 없는 length가 0인 경우를 상정할 필요가 없고, 정말 문자가 말 그대로 whitespace인지 여부만 확인하면 됩니다(이외에도 많은 편의성을 제공하는 함수들이 같은 문서상에 존재하고 있으니 확인해보면 좋을 것 같습니다).

 

 그러나 이게 String이 되는 경우 조금 얘기가 달라질 수 있는데요. 먼저 위에서 character 변수가 Character가 아니라 String이 되면  length가 0인 빈 문자열인 경우와, whitespace와 문자가 같이 존재하는 경우 등이 발생하는데요. character가 " " 인 경우 " " is whitespace는 이해하는데 전혀 문제가 없지만, " i'm cool" is whitespace의 경우라면 확실히 문장으로 봤을 때 어색함이 느껴집니다. 이 때문에 이야기가 오가게 된 것이죠.

 그런데 이렇게 설명되기 이전에 String의 isWhitespace를 if 문에서 봤을 때는 사실 별 생각 없이 넘어갔습니다. 대충 공백을 확인하는 메소드인가보다 했는데, 저렇게 설명을 듣고 나니 확실히 함수명이 어색하다는 느낌을 받았거든요. 영어를 못해서 그랬을까 싶기는 한데, 아마 암묵적으로 코드를 볼 때 익숙한 형태는 자연스럽게 받아들인 상태로 넘어가서 그렇게 되는게 아닌가 싶습니다(사실 안드로이드 개발자로서 isBlank는 익숙하지만 isWhitespace는 별로 익숙하지 않긴 합니다).

 그래서 일단 String.isWhitespace는 추후에 다시 얘기가 나온다면 안드로이드처럼 isBlank가 되지 않을까 생각합니다.

 


 개발자로서 영어를 잘 못하는 것도 있지만, 익숙한 문법에 따라가는 것이 다른 개발자들이 보기에도 더 좋다는 생각에 읽었을 때 영어의 어색함보다는 기존 코드와 얼마나 단어가 일관성있는지가 중요했던 것 같습니다. 그러나 오늘 대화를 하는 동안 누군가는 그게 더 어색할 수 있다는 생각을 했는데요. 듣고 보니 저도 조금 어색하다는 걸 깨닫게 되는 걸 보면, 네이밍은 역시 어렵고도 중요한 문제 같습니다.

 더욱이 고착화된 코드를 가끔씩 옆에서 누군가 흔들어줄 필요가 있다는 생각도 드네요. 뭐, 덕분에 의도치 않게 swift의 isWhitespace에 대해서 알게 되어서 좋았습니다.

 정말 간단한 글입니다.

'IOS' 카테고리의 다른 글

Swift - ARC(Automatic Reference Counting)  (0) 2022.07.29
SwiftUI vs UIKit  (0) 2022.02.13
swift를 공부하기 전에(2)  (0) 2022.01.19
swift를 공부하기 전에(1)  (0) 2022.01.16

댓글