19.11.21 릴리 TIL : Number Formatter사용해보기

Lily·2021년 11월 20일
0

Today I Learned

목록 보기
24/30

🤓 공부한 내용


1. 신기한 Character 속성

Swift 5에서 추가된 Character 속성

Character가 숫자인지 아닌지를 검증하는 기본 프로퍼티가 있을 것 같아서 찾아보다가,
Swift5.0에서 새롭게 추가된 Character 속성을 정리한 글이 있어서 링크를 남겨둔다.

그리고 isNumber라는 프로퍼티는 존재했다.

2. NumberFormatter

NumberFormatter

Foundation Framework에서는 Numeric Value(NSNumber?)와 그 textual representations(String?) 사이를 변환해주는 NumberFormatter 클래스를 제공한다.

100000(NSNumber) <-> 100,000(String)

textual representations은 Integer, Float, Double을 포함한다.
NSNumber가 float나 Double 표현으로 변형될 땐 특정 소수점자리로 변형할 수 있다.

Significant Digits과 Fraction Digits 의 차이

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
  1. usesSignificantDigits = true 일 때
    : minimumSignificantDigits, maximumSignificantDigits 속성 사용

  2. usesSignificantDigits = false 일 때 :
    : minimumSignificantDigits, maximumSignificantDigits 속성은 무시된다.
    대신 정수부와 소수부에 표시되는 숫자의 개수를 각각 한정 지을 수 있다.minimumIntegerDigits, maximumIntegerDigits, minimumFractionDigits, maximumFractionDigits 속성을 사용한다.

🤔 고민한 점


Unit Test Naming

나는 테스트 코드의 함수명을 아래와 같이 한글로 지어주었다.

func test_value가_마이너스12345일때_formatter를_호출하면_3자리마다_콤마가추가된다() 

여기서 생기는 불편함(?)이 함수명엔 .이나 -같은 특수문자를 사용하지 못해서 한글로 읽히는대로 적다보니 가독성이 안좋아지고, 안 예뻐보였다.

그리고 메서드 네이밍에 대한 일관적인 룰이 없는 것 같아 이에 대한 컨벤션을 찾아보았다.

🗂참고해 볼 블로그
[TDD/스크랩&번역] 7가지 유닛테스트 네이밍

테스트 메서드명에 테스트하려는 메서드명을 적어주다 보면, 리팩터링을 할 경우 테스트 메서드에 수동 반영해야하고 이를 놓치면 후에 이해하기가 어려울 것 같다는 단점이 있을 것 같다.

다음 유닛 테스트를 작성할 땐 영어로 테스트 상태 + 기대 결과 형식으로 네이밍을 시도해봐야겠다.
특수문자는 어쩔 수 없는 부분이겠지?🥲

profile
i🍎S 개발을 합니다

0개의 댓글