잊기전에 적어라! 그리고 잊어버려라!

haley·2024년 9월 6일

컴퓨터의 발전으로 인해 내 머릿속 저장장치는 거의 박살난 상태와 다름없다.
(걍, 적어놓지 않으면 다 까먹는다는 뜻....)

프로젝트의 폴더구조에 대해서 몇날며칠을 골머리를 앓다가 걍 모르겠고, 누군가가 잘 만든 구조를 흉내내자는 마음이 들었다. 클린아키텍쳐 mvvm 등등 주워들은것은 많지만 이해하고 있는것은 아무것도 없다. 아직 내가 다가갈 영역이 아니라 생각해서 자세히 알고싶은 마음도 없었다. 그러나 폴더구조를 고민하려면 이런 디자인패턴에 대해서 어느정도는 좀 공부해야할 필요가 있다고 느꼈다.
일단 그걸 하나하나 공부해서 개발을 할 시간은 없다. 빠르게 가보자!

내가 아는 개발 방식은 MVC , MVVM 두개 밖에 없는데 둘다 플러터에서는 써본적도 없거니와.. 내가 직접 A to Z 폴더와 파일을 만들어본적도 없어서 막막했다. 그냥 쉽고빠르게 일단 구글링을 돌려서 타인들이 추천하는 방식으로 폴더를 만들어버리기로 마음 먹었다. (지금 살짝 졸려서 복잡하게 생각하고 싶지 않음)

내가 참고한 폴더구조 잘 정리해놓은 블로그 글_1
내가 참고한 폴더구조 잘 정리해놓은 블로그 글 _2

일단 lib폴더 안에 들어가야할 폴더들은 이렇다.

폴더구조

lib 
	- models
    - screens
    - service
    - utils
    - widgets 
    main.dart

저번 수업시간에 강사님이 파일구조에 대해서 강조를 하신 내용이 있는데 (이것도 메모해둔것 같은데 메모한것을 잃어버렸다. 🥲)
정확히는 기억이 나지 않지만, 정리해보자면
"한 클래스당 파일 하나!"
"기능은 가능하면 쪼개서 클래스화 시키기"
"본인 나름의 논리대로 폴더를 구조화시켜서 일관성있게 작업하기"
말고도 더 있던것 같은데... 되게 짧게 기억난다...
고라우터..2.0? (검색해보니 페이지 연결 방식인것 같다. 지금은 다루지 말고 추후에 공부해서 정리한 다음 글을 올리기로 하겠다.)

이렇게 잘까먹는 나를 위해 블로그에 주절주절이긴해도 매번 글을 올리기로 또 한번 다짐한다.
글을 쓰면서 자꾸 생각을 정리하게 되니까 블로그를 쓴다는것은 참 좋은것 같다.

각 폴더에 대한 쓸모들을 정리해보겠다. 위에서도 말했지만 어느 누군가들이 잘 정리한 폴더구조를 따라할것이다. 나는 아직 이게 Mvvm인지 Mvc인지 잘 정리된 구조인지 모르겠다. 그저 시행착오를 겪어야 할 뿐.

각각의 폴더가 하는 일

  • models : 데이터 모델을 관리하는 폴더
  • screens : 앱에서 보여지는 화면 (정확히는 페이지)을 관리하는 폴더
  • service : api 호출, 데이터 관리 또는 비즈니스 로직을 처리하는 클래스를 관리하는 폴더 (주로 기능적인 측면들을 다루는 부분이 되지않을까?)
  • utils :헬퍼함수, 유틸리티 함수, 상수 값등의 보조기능을 제공하는 파일들을 관리하는 폴더
    이 폴더 때문에 글을 쓰게 되었다. 제일 이해안가고 모르는 단어들이 있는데 만들지 않아도 될것 같았지만 폴더를 만든 이유는 constants.dart (상수들을 모아놓은 파일)을 담기 위해 해당 폴더를 만들었다. 일단 차차 이해해가보자고!
  • widgets : 재사용 가능한 UI 위젯들을 관리하는 폴더
    기존엔 컴포넌트라고 불렀었는데 피그마에서의 컴포넌트 개념과 계속 헷갈려서 그냥 이름을 위젯으로 간단하게 변경했다. 훨씬 직관적이라서 이해하기가좋다.

아직 플러터를 다 배운것도 아니고, 화면만 조금 만들 줄 아는 단계라서 모르는것들은 그냥 일단 과감하게 제쳐두고 왜?라는 질문을 조금 뒤에 품기로 하고, 무작정 만들어봤다.

나는 이제 이 일관성을 잘 지키며 개발을 하면 된다.

폴더구조를 만드는것, 이름을 짓는것, 폰트를 지정하고, 색상을 선택하고, 주석을 다는 것 모든것이 정해진 답이 없기에 답답하고 낯설기만 하다.
매번 설명을 듣고 가이드라인을 지시받아도 온전한 내것이 아니다보니 자꾸 까먹게 된다......
잊지않기 위해 열심히 기록해야한다는 것을 또 한번 느꼈다.

++썸네일은 내가 제일 좋아하는 짤😌

profile
뭐든 한다.

0개의 댓글