---
# System prepended metadata

title: 3주차 K6

---

# 3주차 K6
|K005|K007|K026|K044|K047|K053|
|---|---|---|---|---|---|
|김성환|김수명|박태훈|이원중|이효동|전종현|
## 사각형 뷰 구현 방식
사각형을 그릴 때 사각형 객체 자체를 커스텀 뷰로 만들 수도 있고, 사각형을 그릴 캔버스를 커스텀 뷰로 하여 각각의 사각형을 그려줄 수 있다. 각각의 방법의 장단점은 무엇일까?
* **캔버스**
    * 장점: 하나의 뷰 객체 안에서 모든 사각형을 그릴 수 있어서 상대적으로 가볍다.
    * 단점: 사각형 데이터가 변경될 때마다 캔버스 전체를 다시 그려주어야 하기 때문에 오버헤드가 생길 수 있다.
* **뷰**
    * 장점: 변경된 뷰에 대해서만 다시 그릴 수 있다. 뷰에 대한 안드로이드의 지원(클릭, 드래그, 터치 이벤트 전달)등을 활용할 수 있다.
    * 단점: 사각형이 많아질 수록 뷰 객체도 많아진다.


## 드래그 구현 방식
- 처음 터치한 좌표의 사각형을 먼저 구한 뒤, 이동하는 이벤트 좌표로 위치 변경
- 터치카운트 갯수로, 두 손가락 터치 구분

## 디자인 패턴
- MVC : 안드로이드에서 완벽히 분리하긴 힘든 것 같다.
- MVVM : (AAC의 뷰모델과 혼동하지 않기)

## 라이브 데이터
- MVC, MVVM패턴에 맞춰 어디서 어떤 라이브데이터를 관찰할지 정하기

## 테스트 코드
- LiveData를 다루는 유닛 테스트 코드는 에러 발생 가능성이 높아서 유의해야함.

## 리뷰/피드백
- 함수명, 변수명 직관적인 이름으로 네이밍하기
- 줄여쓰는 것 보다, 한번에 알수있는 네이밍
- object를 쓰지않고 싱글톤 구현 지향
- 데이터바인딩과 옵저버패턴 적절히 사용하기
- !! 쓰지말고 let, apply 등으로 해결
