Character가 숫자인지 아닌지를 검증하는 기본 프로퍼티가 있을 것 같아서 찾아보다가,
Swift5.0에서 새롭게 추가된 Character 속성을 정리한 글이 있어서 링크를 남겨둔다.
그리고 isNumber
라는 프로퍼티는 존재했다.
Foundation Framework에서는 Numeric Value(NSNumber?)와 그 textual representations(String?) 사이를 변환해주는 NumberFormatter
클래스를 제공한다.
100000(NSNumber) <-> 100,000(String)
textual representations은 Integer, Float, Double을 포함한다.
NSNumber가 float나 Double 표현으로 변형될 땐 특정 소수점자리로 변형할 수 있다.
NSNumberFormatter는 숫자를 표현할 때 몇 개의 digits(10진수 숫자)으로 표현할 것인지 결정하는 방법 두 가지가 있다. 처음엔 숫자의 길이를 결정하는 방법인 줄 알았는데, 표시 가능한 유효한 숫자의 개수만 카운트하는 것 같다.(아래 코드의 마지막 예시를를 보면 추론 가능하다)
var numberFormatter = NumberFormatter()
numberFormatter.usesSignificantDigits = true
numberFormatter.maximumSignificantDigits = 4
numberFormatter.string(from: 12345) // 12340
numberFormatter.string(from: 123.456) // 123.5
numberFormatter.string(from: 100.234) // 100.2
numberFormatter.string(from: 1.230) // 1.23
numberFormatter.string(from: 0.00012345) // 0.0001234
usesSignificantDigits = true
일 때
: minimumSignificantDigits
, maximumSignificantDigits
속성 사용
usesSignificantDigits = false
일 때 :
: minimumSignificantDigits
, maximumSignificantDigits
속성은 무시된다.
대신 정수부와 소수부에 표시되는 숫자의 개수를 각각 한정 지을 수 있다.minimumIntegerDigits
, maximumIntegerDigits
, minimumFractionDigits
, maximumFractionDigits
속성을 사용한다.
나는 테스트 코드의 함수명을 아래와 같이 한글로 지어주었다.
func test_value가_마이너스12345일때_formatter를_호출하면_3자리마다_콤마가추가된다()
여기서 생기는 불편함(?)이 함수명엔 .
이나 -
같은 특수문자를 사용하지 못해서 한글로 읽히는대로 적다보니 가독성이 안좋아지고, 안 예뻐보였다.
그리고 메서드 네이밍에 대한 일관적인 룰이 없는 것 같아 이에 대한 컨벤션을 찾아보았다.
🗂참고해 볼 블로그
[TDD/스크랩&번역] 7가지 유닛테스트 네이밍
테스트 메서드명에 테스트하려는 메서드명을 적어주다 보면, 리팩터링을 할 경우 테스트 메서드에 수동 반영해야하고 이를 놓치면 후에 이해하기가 어려울 것 같다는 단점이 있을 것 같다.
다음 유닛 테스트를 작성할 땐 영어로 테스트 상태 + 기대 결과
형식으로 네이밍을 시도해봐야겠다.
특수문자는 어쩔 수 없는 부분이겠지?🥲