개인프로젝트를 해야하는데.. 백지상태에서 하려니 막막하고..
평소에 유튜브로 공부를 하지는 않았는데, 이번에 유튜브맛을 좀 봐야겠다.
이번에 mvvm + 컴포즈를 한 번 맛보려고한다.
완벽주의자가 되려는 좋지 않은 판단같은데, 이 영상을 보는게 좋은 선택일지 아닐지는 다 해보고 평가해야겠다.
이번에 볼 영상은 아래와 같다.
https://www.youtube.com/watch?v=8YPXv7xKh2w&t=1s&ab_channel=PhilippLackner
(start code)
https://github.com/philipplackner/CleanArchitectureNoteApp
(final code)
https://github.com/philipplackner/CleanArchitectureNoteApp/tree/app
대충 봤을때, 해당 저장소에 라이센스가 안보이던데,
따라하는거는 private 저장소로 만들고 해야겠다. -> 영상을 보니, fork를 해라길래 레포지토리를 fork를 해서 따라쳤다.
별점기준:
별점을 이런 기준으로 남길 것 입니다. (저는 별점이 짭니다. 4점만 되도 좋은 책이라는것.)
★★★★★ : 세기의 명서, 길이 남을 도서, 특정 분야를 공부하는 사람이라면 꼭 일어야할 필독서 (ex. 어린왕자)
★★★★ : 명작, 다른 사람에게 추천 할 도서나 강의, 내 개인적으로 큰 도움이 되었다고 생각하는 것
★★★ : 나름 쓸만한 도서나 강의, '정보'가 확실히 담겨있어서 얻어가는게 있다.
★★ : 많이 아쉬운 도서나 강의, 뭔가 공부를 하긴 했다는 생각이 듦.
★ : 내 책장 공간을 낭비하는 도서, 시간을 낭비 한다는 생각이 드는 강의. (사실상 빵점)
나의 별점 :
★★ (2점)
강의 내용을 충분히 따라 갈 수 있을거라 생각했지만, 내 수준으로는 무리가 있는 듯 하다.
학습자의 백그라운드 지식에 따라 좋을 수도 있을듯한 강의.
기본적으로
- 컴포즈,
- 코루틴, 플로우
- sealed class로 enum같이 만드는거?
- 힐트
위의 것들을 알고 있어야 이 강의를 들을 수 있겠다.
어디까지나 내 수준과 개인적인 평일뿐이고, 유튜브 댓글에는 다들 좋다고 칭찬을 하던데 상대적 박탈감이 온다.
그리고 이러한 길이의 강의 영상을 무료로 제공해주는 강의자분에게 respect 한다.
// 강의 분량
영상은 2시간 30분 가량인데,
따라치고 이해하려면 x3배정도 들어갈 것이다.
나는 디펜던시 버전들을 최신으로 올리고, 맥과 윈도우 둘다 돌리기 위해서 싱크, 빌드를 맞추느라 시간이 더 많이 걸렸다.
역시 강의를 들을때는 디펜던시 버전들을 최대한 그대로 두고 그냥 강의에 집중하는게 좋다.
하루만에 공부하는 거는 꽤 힘들 것 같고, (가능은 한데 피곤 할 듯)
대략 2일 정도 공부하면 될 듯하다.
나는 요새 공부에 크게 흥미를 못 느끼게 되어, 쉬엄쉬엄 하다보니 시간이 너무 지나버렸다;;
// 이 영상의 장점 :
- 클린 아키텍쳐를 사용하는 큰 흐름을 볼 수 있다. (장점으로 이거라도 못 썼다면 1점을 줬을테야..)
- 이 영상에서 특이한점이 나라면 ui부터 만들텐데, 강의자는 도메인 레이어부터 잡아놓고 개발을 시작해나가는걸 볼 수 있음.
// 이 영상의 단점 :
- 전반적으로 빠르고 어렵다 (영어가 어려운걸수도?)
- 영어로 설명해서, 강의자가 말하는 내용을 온전히 이해하기 힘들고 대강 알아들었다. (이거는 사실.. 학습자인 내 문제..)
- 설명이 그리 상세하지 않다, 이미 많은 것을 알고 있어야함. (예전 영상에서 설명했으니, 설명 안 한다는게 좀 있었던 것 같음.)
- 컴포즈를 쓰지만, 컴포즈에 대한 설명은 없고, 클린 아키텍쳐 만드려고 구조화하는 것을 중점을 둔다고 보면 된다.
- 영상으로 된 강의가 보통 그렇듯이, 강의자가 타이핑하는거 따라가기에도 버거움. 코드를 이해하기 보다는 영상을 멈추고 따라치고.. 따라치는데 손목이 아팠다.
- 역시 클론코딩을 하려면 필요한 내용을 다 알고 있어야하니, 클론코딩의 의미가 새로운거 학습이 아니라 복습이어야함.
따라서, 클린 아키텍쳐의 큰 흐름이 궁금한 사람이 보면 될 영상이다.
추가적으로 chatgpt에게 물어서 학습한 내용 :
// 클린아키텍쳐에서 일반적으로 패키지 분리를 어떻게 하는지?
- Presentation layer : 이 패키지는 Activity, Fragment, View, Adapter, ViewModel 등 UI 컴포넌트와 관련된 코드를 포함합니다.
- Domain layer : 앱의 비즈니스 로직과 관련된 코드가 위치하는 패키지입니다. 이 패키지는 Use Case, Repository Interface 등의 인터페이스와 비즈니스 로직, Model 패키지도 여기에 들어간다고 함. Model이 Entity와 혼동될 수 있는데, entity는 data layer에서 사용되고 데이터베이스 테이블과 매핑된다, 반면, model클래스는 도메인 layer에서 사용되고 앱의 비즈니스 로직에서 사용된다. -> 이 강의에서는 model이 domain layer, data layer 둘다 걸쳐서 쓰는데 model을 따로 빼는건 어떤가싶기도 하다?
- Data layer : 앱의 데이터와 관련된 코드, 이 패키지는 Repository 구현체, Remote/Local Data Source 등 데이터 접근 계층과 관련된 코드
- DI layer
- utils layer
// usecase의 의미, 사용법 (viewModel에 쓸거를 추상화한건지, repository에 쓸거를 추상화하는건지)
(추상화라는 말이 좀 잘못된거 같아보인다?)
viewModel, repository의 구현내용을 추상화하는게 아니라 비즈니스 로직을 추상화한다고한다?
repository와 viewModel의 매개체 역할을 하고, repository에서 필요한 데이터를 가져와 viewmodel에 반환.
이렇게 해서 viewmodel에 비즈니스 로직처리하는 것을 분리함.
usecase는 하나 이상의 repository에서 데이터를 가져와서 필요한 계산을 하는 것일 수도 있고, 여러 repository에서 데이터를 가져와 조합하는 것일 수도 있다.
만약에 usecase를 구현하지 않으면 어디에 비즈니스로직이 작성 될 지 물어보니, viewModel과 repository에 둘다 구현 될 수 있다고 함.
viewmodel에 모든 비즈니스 로직을 구현하면, viewModel코드가 복잡해지고, 같은 기능을 구현할때 중복코드가 발생할 수 있다.
마찬가지로 repository에 모든 비즈니스 로직을 구현해도 repository의 코드가 복잡해지고, repository에서 같은 기능에 대한 중복코드가 발생 할 수 있다고 한다.
// 프로그래밍에서 추상화란 무슨 뜻이지?
프로그래밍에서 추상화는 복잡한 세부 사항을 추상적인 개념으로 단순화하는 과정입니다. 즉, 추상화는 복잡한 것을 간결하고 이해하기 쉬운 개념으로 변환하는 것입니다.
추상화는 객체지향 프로그래밍에서 매우 중요한 개념 중 하나입니다. 객체지향 프로그래밍에서 추상화는 클래스와 인터페
이스를 사용하여 공통된 속성과 동작을 가진 객체를 정의하는 것을 의미합니다. 예를 들어, 여러 개의 동물 클래스를 만들 때, 공통된 속성과 동작을 추출하여 동물 클래스를 만들 수 있습니다.
또한 추상화는 프로그래밍에서 유지보수성을 높이는 데 중요한 역할을 합니다. 추상화를 통해 복잡한 코드를 단순화하고, 코드 간의 의존성을 줄일 수 있기 때문입니다. 추상화를 잘 활용하면 코드를 더 쉽게 수정하고 확장할 수 있으며, 버그를 더 쉽게 찾을 수 있습니다.
-> 대충 정리해보면, '현실 세계 또는 프로그래밍에' 있는 어떤 복잡한 것을 프로그래밍으로 구현하기 위해 단순화 시키는 것을 말하는 듯.
// stateFlow와 sharedFlow의 차이점?
stateFlow는 상태를 추적, sharedFlow는 이벤트를 여러 구독자에 전달.
결론 (느낀점)
영상과 별개로..
클린아키텍쳐 뿐만아니라, 디자인패턴이 좋은건가 의문이 들기도 하였다. (물론, 프로젝트가 커질 수록 좋을듯하긴 한데..)
파일을 쪼개다보니 더 복잡해지고 어지러운거 같다.
이것도 화면이 2개 밖에 안되는건데, 파일은 20~30여개가 생겨버리는데..
아름다운 결혼식용 3단 케이크를 만들었는데, 실상은 맛이 없는 느낌이랄까..
이거 다 공부해서 프로젝트 만들 생각하면, 절대 프로젝트를 만들 수 없겠다는 생각이 든다.
내가 아는 수준에서, 프로젝트를 만들고 이상한 디자인패턴이 되더라도 그것을 수정해나가는게 이상적인 것 같다.
-> 이제는 따로 공부는 그만하고 프로젝트를 시작하자.
'공부 자료 리뷰 (책 서평, 인강리뷰)' 카테고리의 다른 글
차라투스트라는 이렇게 말했다. 리뷰 (0) | 2023.09.13 |
---|---|
유튜브 MVVM Movie App (0) | 2023.05.13 |
구글 코드랩이 어딨냐면.. (0) | 2023.02.15 |
이펙티브 코틀린 (서평 & 리뷰 & 후기 & 일기) (0) | 2023.02.11 |
곤도마리에 - 정리의 힘, 정리의 기술 (서평 & 리뷰 & 후기 & 일기) (0) | 2023.01.14 |