또는 좌측 태그 목록에서 Project_CaculatorApp
을 눌러보세요!
기본 사칙연산을 수행하는 정수형 계산기 앱을 만들었다(Github). 스토리보드와 코드베이스 두 가지 형태로 개발했으며, 스토리보드는 기본 기능만 구현하고 코드베이스는 추가 기능을 계속 구현해나갔다. 처음으로 혼자서 '앱'을 개발하는 것이라서 무척 재밌었고, UI 요소를 다루다보니 추가 기능 구현이나 UX 개선을 고민하는 과정이 풍부해져서 적당한 선에서 자르는 것이 더욱 중요하게 느껴졌다. 소수점을 다루지 않는 정수형 계산기다보니 큰 제약 없이 여러가지 예외 처리 방식을 고민을 할 수 있어서 좋았던 것 같다. 동시에 다음에는 소수점을 다루는 계산기로 개선해보고 싶다.
NSExpression
채택0으로 시작하는 숫자 (Case A)
ViewController
로부터 Model(CalculatorLogic
, CalculatorLogicDelegate
)을 분리Portrait Mode Only
로 제한, 표현식 라벨의 동적 폰트 스케일링 구현중복된 연산자
extension
과 MARK
주석으로 분리연산자로 끝나는 식
, 0으로 시작하는 숫자 (Case B)
iPhone Pro 16
에 더불어 iPhone SE 3
과 iPad Pro 11-inch
환경도 테스트leading/trailing
을 left/right
로 변경하여 제한Target Family: iPhones
/ Portrait Mode Only
/ UI Status Bar Style: Dark Content
0으로 나누기
Portrait Mode Only
를 두 차례 적용했다. AppDelegate
에서 코드로 한 번, 후에 프로젝트 설정에서 옵션 체크로 또 한 번 하였는데, 돌이켜보니 안일한 생각인 것 같다. 이번에 코드로 Autolayout을 적용하면서 Auto Resizing Mask와의 충돌을 피하기 위해 view.translatesAutoresizingMaskIntoConstraints = false
를 넣었던 것처럼, 같은 기능을 하는 요소가 있다면 충분한 검증을 한 후 적절한 조치를 취해야 할 것이다. 다행히 화면 회전 테스트에서는 문제가 없었으나 AppDelegate
의 해당 코드를 지워도 똑같이 동작하는지는 아직 의문점으로 남아있다..baselineAdjustment = .alignBaselines
와 .lineBreakMode = .byTruncatingHead
를 적용했는데 확실하진 않지만 이 때문인지 다음줄로 문자가 넘어갈 때 부자연스러운 상황이 연출되었다. 시간에 여유가 있다면 좀 더 들여다 봤을텐데 아쉽다. .textAlignment = .right
인 expressionLabel
의 오른쪽 면은 매끄럽게 정리되지만 왼쪽 면은 숫자에 따라 요철이 생기는 것을 확인했는데, 문제는 그렇다고 .textAlignment = .justified
로 하면 숫자가 왼쪽 면에서부터 표시되어 곤란하였다. 이것도 좀 고민하면 해결이 가능할 것 같다. README
를 마지막 단계에 작성했는데, 거꾸로 README
를 포함하는 형태로 기획을 작성해 프로그래밍해도 괜찮겠다는 생각이 들었다. 그러면 자연스럽게 프로젝트의 아키텍쳐를 고민하게 되고, 후에 이미 짜여진 코드에서 무언가를 분리하거나 추가하면서 드는 비용을 미리 예방할 수 있을 것 같다.
커밋 이모지 뭐야.. 너무 신박하잖아... 귀여운건 못 참지 잘 배우고 갑니둥 ^-^