또는 좌측 태그 목록에서 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 Content0으로 나누기Portrait Mode Only를 두 차례 적용했다. AppDelegate에서 코드로 한 번, 후에 프로젝트 설정에서 옵션 체크로 또 한 번 하였는데, 돌이켜보니 안일한 생각인 것 같다. 이번에 코드로 Autolayout을 적용하면서 Auto Resizing Mask와의 충돌을 피하기 위해 view.translatesAutoresizingMaskIntoConstraints = false를 넣었던 것처럼, 같은 기능을 하는 요소가 있다면 충분한 검증을 한 후 적절한 조치를 취해야 할 것이다. 다행히 화면 회전 테스트에서는 문제가 없었으나 AppDelegate의 해당 코드를 지워도 똑같이 동작하는지는 아직 의문점으로 남아있다..baselineAdjustment = .alignBaselines와 .lineBreakMode = .byTruncatingHead를 적용했는데 확실하진 않지만 이 때문인지 다음줄로 문자가 넘어갈 때 부자연스러운 상황이 연출되었다. 시간에 여유가 있다면 좀 더 들여다 봤을텐데 아쉽다. .textAlignment = .right인 expressionLabel의 오른쪽 면은 매끄럽게 정리되지만 왼쪽 면은 숫자에 따라 요철이 생기는 것을 확인했는데, 문제는 그렇다고 .textAlignment = .justified로 하면 숫자가 왼쪽 면에서부터 표시되어 곤란하였다. 이것도 좀 고민하면 해결이 가능할 것 같다. README를 마지막 단계에 작성했는데, 거꾸로 README를 포함하는 형태로 기획을 작성해 프로그래밍해도 괜찮겠다는 생각이 들었다. 그러면 자연스럽게 프로젝트의 아키텍쳐를 고민하게 되고, 후에 이미 짜여진 코드에서 무언가를 분리하거나 추가하면서 드는 비용을 미리 예방할 수 있을 것 같다.
커밋 이모지 뭐야.. 너무 신박하잖아... 귀여운건 못 참지 잘 배우고 갑니둥 ^-^