코드 개선 - 준비편 (2)

코드 개선 - 준비편 (2)

·

2 min read

코드 개선에 있어 어떤 순서로 진행할지 전략적인 부분을 정했다.

일단, 내가 나중에 원하는 기능들을 전부 넣어 만든 디자인에도 활용할 수 있도록 데이터 구조를 다시 설정했다. E-R 다이어그램을 그려본 뒤 개선할 방향에 맞게 데이터 구조를 만들어 보았다. 기존에 있던 것과 추가할 것, 그리고 필요할 만한 것을 기반으로 해봤다.

앱 이름이 Monthly Piece인 것처럼 매달마다 작품 조각(piece)에 대한 감상이나 비평을 모아 자신만의 감상집을 만드는 개념이다 그래서 기록 하나를 조각 하나로 본다.

기존에는 작품 정보에 정보 종류가 고유한 값을 가지고 값도 하나밖에 기술하지 못했지만, 이를 개선하여 배우 주연이 여러 명일 경우와 같이 특정 종류에 대해 여러 값을 기입하고 싶을 때에 대응했다.

그리고 모음집에 어떤 조각을 필요로하는지 따로 적는 것이 아니라 조각에 어떤 모음집에 이 조각이 포함되어 있는가를 검색하여 추가하도록 했었다. 그래서 이 부분이 조각 갯수가 많아지면 연산량이 많아질 것을 고려하여 별도의 데이터로 저장하기로 했다.

실제로는 사진과 조금 다른 부분이 생겼지만 거의 비슷하다. 확실히 학교에서 데이터베이스에 대해 배운 것이 도움이 되었다.


처음 건드릴 부분을 정했다. 모델과 뷰 모델을 건드리면 좋겠지만 그건 현실적으로 어려운 일이라 판단했다.

현재 가장 문제인 부분은 코드 분량이나 뷰에 묶여서 데이터 처리를 하는 데이터 관리 부분이 맞다. 그러나 지금 이 부분을 건드리게 될 경우 다음과 같은 문제가 발생할 수 있다.

  • 뷰에서는 함수 형식으로 이를 불러오게 되는데, 함수에 들어가야하는 인자와 클래스 간 선언된 것들의 이름과 상태(전역인지 지역인지) 등이 명확하지 않아 일부에서만 사용 가능할 수 있다.

  • 현재 데이터 처리 부분이 여러 군데에 여러가지 방식으로 구분되어 있으며 이를 UI 구성요소를 다루는 코드와 구분이 불가하여 어디까지 뷰모델에게 맡겨야하는 부분의 코드인지 구분할 수 없다. (효율성 저하)

그래서 오류가 나지 않으면서 다음 작업이 될 뷰 모델 작업을 수월하게 진행할 수 있도록 먼저 다른 작업을 진행하기로 했다. UI 구성요소의 공통 부분의 독자적인 클래스화, 뷰 컨트롤러 내 UI 구성요소의 가독성 개선을 첫 번째로 할 것이다.

이 과정이 끝나면 기존 코드에서 ViewDidLoad에 전부 들어있던 초기화 코드를 분리하고, 공통 요소들이 각자의 클래스에서 초기화 코드가 작성될 것이다. UI 구성요소의 constraint 설정 작업은 별도의 함수로 분리하여 ViewDidLoad에서는 기존 코드의 내용을 함수 몇 줄로 대체하게 된다.

그리고 UI 구성요소가 아니라 변수나 상수로 쓰이는 값들이 어디에 어떻게 쓰이는지 확인할 수 있고, 이들을 어디에서 관리할지 다음 단계에서 곧바로 결정할 수 있다.

뷰 모델을 생성하고 데이터 관리 부분을 해결하고 나면, UI 구성요소 중 변경이 필요하거나 추가할 부분을 추가할 것이다.


할 일은 어느정도 정해놓은 상태이다. V1.1.0에 맞춰 디자인 적용한다던지 이런 것들까지 완료하는 것을 목표로 삼았다. 일단 내 가장 중요한 1차 목표는 내 코드가 아래 움짤처럼 되지 않게 만드는 것이다. 전개편에서는 이 1차 목표를 향한 내용을 다룬다.

Computer Lol GIF by The IT Crowd