🎨 디자인 패턴 스터디
🔥 스터디 요약
- REFACTORING GURU - Design Patterns의 디자인 패턴 22종류를 공부하고, 예시 코드를 작성하고, 토론하기 위한 스터디입니다.
🔥 스터디 주제
1주차 | 2주차 | 3주차 | 4주차 |
---|---|---|---|
Singleton | Prototype | Adapter | Abstract Factory |
Builder | Factory Method | Bridge | Template Method |
🔥 스터디 인원
민쏜 |
Derrick Kim |
Kiwi |
Judy |
unchain |
BaekGom |
웡빙 |
현이 |
🔥 학습 교재
REFACTORING GURU - Design Patterns의 디자인 패턴 22종류
🔥 스터디 사이클
0) 스터디 시작 전 (1회)
- design-patterns-in-swift 저장소를
fork
합니다.
1) 매주 수요일 스터디 이후 (+첫 주)
- 매주 랜덤으로 4인1팀으로 두 팀을 편성하며, A팀과 B팀으로 나눕니다.
- A팀과 B팀은 각기 다른 디자인 패턴을 할당 받습니다.
2) 다음 스터디 시간까지
- 자신의 조에 배정된 디자인 패턴을 학습합니다.
- 교재의 개념과 코드를 보고, 필요하다면 다른 자료도 찾아보시면 좋습니다.
- 이 주제를 처음 접하는 사람에게 설명할 수 있을 정도로 준비합니다.
- 개념 설명에 필요한 자료를 준비하면 좋습니다.
- 마크다운 형식으로 작성하면 좋습니다.
- 교재, 또는 블로그 등을 참고하지 않고, 자신만의 예제 코드를 작성합니다.
- 개념을 더 명확히 이해하고, 다른 곳에 활용하기 위함입니다.
- 예제를 위한 미니 앱을 만들면 좋지만, 콘솔앱으로도 대체 가능합니다.
- 깃허브 스터디 레포지토리, 해당 주제의 폴더에 들어가 자신의 폴더를 만들고 커밋 규칙에 맞추어 커밋 및 PR 합니다. PR은 main 브랜치로 보냅니다.
- 레포지토리의 폴더는 두 종류로 정리하려고 합니다.
- 주제별 폴더에 커밋:
1. Singleton
과 같은 자신이 맡은 주제별 폴더 내에Singleton-Minsson
형식으로 프로젝트를 만들고, 코드 작성 후 커밋합니다. 개념 설명을 위한 자료도 이 프로젝트 폴더 안에 넣어주시면 됩니다. 디자인 패턴과 닉네임 모두 영어로 작성합니다. 닉네임의 경우 필요하다면 실명을 사용해도 됩니다. - 개인별 폴더에 커밋: 처음 커밋할 경우, 개인별 프로젝트를
DesignPatterns-Minsson
의 형식으로 만듭니다. 닉네임은 위의 주제별 폴더에서 사용한 것과 통일합니다. 본인이 지금까지 작성한 개념과 코드를 이 프로젝트 폴더 내에 차곡차곡 쌓아나갑니다.
- 주제별 폴더에 커밋:
- 스터디 전까지 이 과정을 완료 후
PR
보냅니다. 필요하다면 스터디 이후에도 수정할 수 있습니다.
- 레포지토리의 폴더는 두 종류로 정리하려고 합니다.
- 위의 모든 과정에서 질문이 있다면 디스코드의 디자인 스터디 방에서 질문합니다.
3) 스터디 (19시 - 20시 30분)
- 각 팀은 디스코드 채널에 모여, 한 주 동안 공부한 개념과 코드를 공유하고, 토의하는 시간을 갖습니다.
- 이 시간은 상대 팀의 팀원에게 개념과 코드를 설명하기 전, 같은 주제를 공부한 팀원들에게 검증 받는 시간입니다. 질의응답을 통해 모자랐던 개념과, 코드의 오류를 수정하는 시간이기도 합니다.
- 다른 주제를 공부했던 상대 팀의 팀원에게 1:1로 설명할 수 있도록 다 함께 대화를 나누고, 개념을 정리하고, 설명에 필요한 자료도 보완합니다.
4) 스터디 (20시 30분 - 21시 30분)
- 상대팀의 누군가와 랜덤 매칭 되어, 둘만의 대화방으로 이동합니다.
- 각자 공부한 디자인패턴의 개념 및 예제 코드를 자세히 설명해줍니다.
5) 스터디 (21시 30분 - 22시)
- 10명이 모두 모여 질의응답 및 토의 시간을 갖습니다.
- 다음 주에 공부할 주제를 선정합니다.
- 스터디 진행 방향 개선이 필요한 경우 논의합니다.
🔥 커밋 규칙
1) Commit Header, Body
- Header: [디자인 패턴 이름] 활용 컨셉
- Body: 설명
2) 커밋 예시
- 터미널 사용 시
git commit -m "[Mediator Pattern] 체크박스와 텍스트필드" -m "설명"
- Fork 사용 시
🔥 개념 기록을 위한 개인별 마크다운 파일 작성법
# 디자인 패턴 이름
## 간단한 개념 설명
## 자신이 작성한 코드에 대한 설명