-
Notifications
You must be signed in to change notification settings - Fork 4
중간발표 피드백
Han-Gyeol Lee edited this page Feb 25, 2019
·
6 revisions
- 코드 커버리지 80% 넘긴 썰을 통하여 코드 커버리지에 대한 의미를 생각해볼 수 있었습니다.
- 본격적인 리팩토링을 진행하기 이전에는 하나의 소스 파일마다 표시되는 퍼센트를 높이는 것이 게임을 하는 듯한 느낌이 들어서 단순히 테스트 케이스를 작성하는데 집중하였습니다. 이를 위해서는 당연하다고 생각되는 동작에 대해서도 테스트 케이스를 작성해야 했고, 코드 커버리지 수치는 단순한 테스트 케이스를 작성하는 이유를 제공해 주었습니다.
- 리팩토링을 진행하면서 테스트의 중요성을 여실히 느낄 수 있었습니다. 이처럼 자신있게 코드를 수정한 적은 처음이었습니다. 테스트에 실패한 경우 리팩토링한 코드에는 분명한 오류가 숨겨져 있었고, 이러한 경우를 확인하였기 때문에 리팩토링 후 테스트가 통과하면 잘 동작하는 코드를 작성하였다고 단언할 수 있었습니다.
- 오늘 마신 미세먼지 및 초미세먼지의 수치는 이 사이트를 참고한 수식을 바탕으로 계산됩니다.
- 일반 성인이 농도 1㎍일 때, 1m를 걸었을 경우, 0.00036㎍을 흡입하여 아래와 같은 수식을 도출해냈습니다.
걸은 거리당 미세먼지 흡입량(㎍) = 거리(m) * 농도(㎍) * 0.00036(㎍)
- 거리는 HealthKit 프레임워크가 제공하는 시간당 걸음거리를 사용하여 신뢰성을 높였습니다.
- 시간당 걸음거리 500m를 기준으로 실외 및 실내를 구분하여 데이터를 가공하고 있습니다.
- 미세먼지 및 초미세먼지 농도는 국가대기오염정보 Open API를 사용하여 가져오고 있습니다.
- 기본적으로 제가 그동안 프로그래밍하면서 사용해온 익스텐션을 프로젝트 초기에 추가하여 사용하였습니다.
- 이외에 SnapKit을 흉내낼 목적으로 작성한
NSLayoutConstraint
관련 익스텐션, 이미지를 리사이징하는 코드 정도를 제외하고는 모두 팀 내에서 직접 작성하여 사용하는 것들입니다.
# .swiftlint.yml
...
excluded:
- FineDust/Supporting Files/AppDelegate.swift
- FineDust/Supporting Files/GeoConverter.swift
- FineDustTests/
- FineDust/SWXMLHash
...
-
AppDelegate.swift
의 경우 사전에line_length
룰에서 99자가 넘어가면 경고, 120자가 넘어가면 에러를 내도록 하였고,application(_:launchOptions:)
메소드가 우리가 정한 컨벤션 (함수 호출시 코드 길이가 너무 길면 두 번째 인자부터 개행하기) 을 적용하여도 라인 수가 넘어가 경고가 발생하여 제외했습니다. -
GeoConverter.swift
는 Core Location이 가져온 위경도 값을 미세먼지 API 호출에 사용하기 위한 TM좌표로 변환하는 기능을 담당하며, 공개된 소스를 사용하였기 때문에 제외했습니다. -
FineDustTests/
는 테스트 코드에서 SwiftLint를 적용할 필요가 없다고 판단하여 제외했습니다. -
SWXMLHash
는 XML 파싱 기능을 하는 오픈 소스 라이브러리로,GeoConverter.swift
를 제외한 것과 같은 이유로 제외하였습니다.
Boostcamp 3rd iOS C-2 FineDust