코딩 21

20220920-21 TIL #비즈니스 로직은 분리 #레이어를 나누자 #Repository pattern

이번주 초까지 급하게 끝내야 하는 일정이 있어서 코드리뷰를 못하다가, 약간 시간이 생긴 오늘 코드리뷰를 했다. 평소에도 궁금한건 물어보면서 진행했지만, 오늘 리뷰하면서 전체적으로 우리 앱의 아키텍처에 대해서도 다시 설명을 해주셨다. 마침 오늘 아침에 서버 연동 부분을 보면서 어떤 레이어 구조로 나눠져 있는지, 각각 어떤 역할을 하는지 다시 살펴보았고, 계속 업무를 하면서 처음보다는 이해가 된 부분도 있고 궁금해진 점도 있어서, 2시간 가까이 얘기하면서 많은 부분이 정리되었다. 최근에 가장 큰 고민은 비즈니스 로직을 어디에 구현해야하는지, 였다. 우리 패키지 구조에서 이미 ui와 feature는 구분을 하고 있고, 위젯을 만들면서도 계속 위젯에는 로직이 들어가지 않게 분리하려고 했다. ui와 비즈니스 로..

회고 2022.09.21

20220915-16 TIL #Tabbar #scroll #차트만들기 #provider

새로운 페이지 작업을 하게 되었는데, tabbar, scroll, 차트 기능이 포함되어 있다. Tabbar + scroll Tab을 이용해서, Tab마다 다른 화면을 그릴 수 있다. https://docs.flutter.dev/cookbook/design/tabs Work with tabs How to implement tabs in a layout. docs.flutter.dev Tabbar는 Appbar의 bottom으로 구현할 수도 있고, Appbar가 아니라 Scaffold의 body 안에도 구현할 수 있다. 처음에는 Appbar에 bottom에 DefaultTabController를 이용해서 구현하고, Scaffold body에 TabBarView를 구현하였다. 그런데 TabBar와 TabBa..

회고 2022.09.19

20220907-08 TIL #ui작업하기 #위젯 #비즈니스로직분리하기

처음 업무를 받은 날, 재택을 하다보니 여러가지 궁금한 점이 많았다. 슬렉으로 계속 질문하면서 업무를 했지만, 아직 업무 코드 파악이 덜 된 부분도 많았고 플러터는 처음 하다보니 어떤 방식으로 업무를 해야하는지도 아직 감이 오지 않았다. 우선 비교적 간단한 페이지 UI를 작업하기로 했는데, 위젯(컴포넌트)만 하더라도 새로 만드는게 좋은지, 기존에 만들어진 위젯을 사용하는게 좋은지 판단이 잘 되지 않았다. 출근해서 업무를 하면서 사수와 이런 고민들을 같이 얘기하면서 알고보니 컴포넌트화 되있는 위젯 버튼이 있는 경우도 있었고, 기존에 만들어져있는 컴포넌트에서 required parameter 하나를 그냥 empty string을 넣고 사용하는게 낫겠다고 판단이 되는 경우도 있었다. 또, 기존 컴포넌트를 사용..

회고 2022.09.13

[Excercism] Space Age #enum

https://exercism.org/tracks/dart/exercises/space-age Space Age in Dart on Exercism Can you solve Space Age in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org  행성과 초seconds가 주어지면 조건에 따라서 나이를 계산하는 문제이다. 각 행성들의 공전 주기가 Earth Year로 주어졌기 때문에 1) 행성별로 One Earth Year을 구하고, 2) 주어진 초를 지구 나이로 환산한 뒤에 2) / 1)로 답을 구했다. 비슷비슷한 개념이 많아서 메서드명이나 변수명을 어떻게 만들어야 하는지 고민이 되..

Language/Dart 2022.09.08

[2022]0829-0904 WIL #Flutter 기초 강의 마무리 #riverpod

지난 주부터 듣던 Flutter 기초 강의를 모두 들었다. 후반에 미세먼지 앱을 만드는 부분이 있었는데 모델링 부분에서 '이렇게 해도 되나?'라는 고민이 많았고, 이전 강의들보다 다루는 데이터도 많고 리팩토링도 계속 하다보니 조금 헷갈리는 부분이 많았다. 특히 상태관리를 StatelessWidget과 StatefulWidget만 사용하다보니 데이터를 전달하고 관리하는게 중요했다. 강의를 다 듣고 나서, 우리 앱에서도 사용하고 있는 상태관리 패키지인 riverpod을 공부하기 시작했는데 정리하면서 생각해보니, 왜 상태관리 패키지를 사용하는지 알 것 같다. 상태관리 패키지를 사용하면 훨씬 더 편하게 데이터들을 관리할 수 있고, 각 위젯에서 필요한 데이터들을 쉽게 접근하고 watch할 수 있을 것 같다. 그리..

회고 2022.09.06

[2022년 8월] 회고!! #Flutter

8월에는 정말 많은 일이 있었다. 틈틈히 휴가도 가고, 이직도 하고, 코로나도 걸리고! 이번 달 개인적으로 가장 큰 이슈는 이직이었다. 이미 7월 말에 이직이 확정된 상태였지만, 중간에 여러 일들이 있어서 플러터를 하게되었다. 그래서 공부 방향도 많이 바뀌었다. 8월에 공부한 것 운영체제 인프런에서 재밌어 보이는 강의를 하나 구매해서 다 들었다. 출퇴근에 틈틈히 들었는데 꽤 재미있었다. 네트워크 쪽은 아직 별 흥미를 느끼지 못하고 있는데, 운영체제는 꽤 재미있다. 이번에 강의들으면서 어느정도 기본 개념은 잡힌 거 같아서 다음에는 더 어려운 책을 도전해봐도 될 것 같다. https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-%EC%9A%..

회고 2022.08.31

[2022]0822-0828 WIL #Flutter 기본 정리

이번 주에는 대부분 플러터와 다트를 공부하는데 시간을 보냈다. 인프런에서 flutter 3.x 버전이 호환되는 새로운 강의를 듣기 시작했다. https://www.inflearn.com/course/%ED%94%8C%EB%9F%AC%ED%84%B0-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8/dashboard [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출! - 인프런 | 강의 iOS 앱과 Android 앱을 코드 한번만 작성해서 모두 제작한다! 코드팩토리의 Flutter 초보 탈출 강의! 디테일한 이론과 흥미로운 프로젝트를 진행하며 탄탄한 기본기 쌓기!, - 강의 소개 | 인프런... www.inflearn.com 강의 분량은 꽤 많지만..

회고 2022.08.30

[2022]0815-0821 WIL #이직!! 그리고 Flutter

이번주까지 이전 직장에서 근무를 하고 다음주부터 새로운 직장에 다니게 되었다!! 이직 준비하면서 여러 가지 고민들이 있었는데, 면접을 하면서 정말, 오랜만에 너무너무 재밌겠다는 생각이 많이 들었다. (실전 프로젝트 이후로 오랜만인거같다!!!!) 코딩하는것 자체도 즐겁지만 새로운 팀에서는 팀원들과 함께 새로운 걸 만들어가고 내가 적극적으로 의견을 내고 반영시킬 수 있는 환경일 것 같다는 점이 매우 컸다. 함께 런칭하고 성장시키는 경험을 해보고 싶었다. 이직을 하게 되면 우선 기술스텍이 바뀌게 되고, 고용 안정성 측면에서보면 더 불안정한 상태가 되지만 그럼에도 이직을 선택하게 되었다. 그리고 여러가지 일들로 플러터를 선택하게 되었다. 전부터 앱개발을 해보고 싶다는 생각은 있었고, 나에게 업무로도 플러터가 잘..

회고 2022.08.22

[Exercism] Scrabble Score #가독성 있는 코드란?2

https://exercism.org/tracks/dart/exercises/scrabble-score Scrabble Score in Dart on Exercism Can you solve Scrabble Score in Dart? Improve your Dart skills with support from our world-class team of mentors. exercism.org 이전 Leap랑 같이 가독성 있고, 수정하기 좋은 코드에 대해 얘기를 나눌 수 있었던 문제! 처음에 내가 문제를 풀었던 방식은 1) 단어별 점수 조건을 Map으로 만들고 + 2) 주어진 단어를 List로 변환해서 이중 for문을 사용해서 점수를 구했다. 여기서 또 알게된 재밌는 사실은, 다트는 .dart 파일마다 반드..

Language/Dart 2022.08.18

20220803 #Factory

휴가가 끝나고 돌아오니, 새로운 리펙토링이 있었다. 휴가를 가기 전에 전략패턴을 사용하면서 type에 맞는 구현체를 찾아올 때 어떤 방법이 좋을지 고민이 있었다. 컨트롤러에서 해당 구현체를 List로 주입하고 type을 비교하는 메서드를 하나 만들어서 해당 구현체를 넣어주었는데, 구현체를 찾기 위한 목적의 메서드를 하나 만든다는 것에서 좋은 방법은 아닌 것 같았다. 팩토리를 사용하자는 의견이 있었는데, 며칠 자리를 비운 사이에 리팩토링이 되어 있었다. 컨트롤러에서는 Factory에 있는 메서드를 사용하고, Factory에서는 switch문을 사용해서 type에 따라 알맞은 구현체의 해당 메서드가 실행되도록 하였다. Factory가 너무 지저분해지지 않을까, 하는 걱정도 있었는데 구현해놓고 보니 오히려 가..

회고 2022.08.07