Skip to content

Latest commit

 

History

History
306 lines (251 loc) · 7.29 KB

README.md

File metadata and controls

306 lines (251 loc) · 7.29 KB

about project wable

print("비난, 조롱 없이 내 팀과 선수를 응원하는 커뮤니티")
print("와블 iOS 레포지토리입니다 🚀")



developer

변상우
@boogios
박윤빈
@binisnil
김진웅
@JinUng41
이유진
@youz2me
sangwoo yunbin jinung youjin



Git Convention

Prefix (Tag)

Prefix 설명
Feat 기능 구현
Add 파일(이미지, 폰트 등 포함) 추가
Delete 파일 삭제
Chore 이외 자잘한 수정
Refactor 코드의 비즈니스 로직 수정
Fix 버그 등의 기능 전체 수정
Style UI 스타일(오토레이아웃 등) 설정
Setting 프로젝트 설정
Docs 문서 작성

Message

[Prefix] #이슈번호 - 메세지 내용

[Feat] #1 - 로그인 기능 구현



Library

Library Description
Moya 추상화된 네트워크 레이어를 보다 간편하게 사용하기 위함
CombineMoya Combine을 활용한 네트워크 요청을 보다 효율적으로 처리하기 위함
Then UI 구현 시, 클로저를 통해 인스턴스를 보다 간편하게 초기화하기 위함
Snapkit UI 구현에서 오토레이아웃을 간편하게 적용하기 위함
Lottie JSON 기반 애니메이션을 UI에 쉽게 적용하기 위함
Kingfisher 이미지 캐싱 및 다운로드 최적화를 통해 UI 성능을 개선하기 위함
KakaoOpenSDK 카카오 소셜 로그인 및 API 활용을 위함
Firebase FCM을 이용한 푸시 알림 및 백엔드 기능 활용을 위함
Amplitude-Swift 사용자 행동 분석을 위한 이벤트 트래킹을 위함



foldering

📁 Wable-iOS
├── 📁 App
│   ├── AppDelegate
│   ├── SceneDelegate
├── 📁 Resource
│   ├── 📁 Config
│   ├── 📁 Font
│   ├── 📁 Animation
│   ├── 📁 Info
│   ├── 📁 Assets
│   │   ├── 📁 Color
│   ├── LaunchScreen
│   ├── ViewController
├── 📁 Core
│   ├── 📁 DI
│   ├── 📁 Combine+
│   ├── 📁 Logger
├── 📁 Infra
│   ├── 📁 Token
│   ├── 📁 Keychain
│   ├── 📁 Network
│   │   ├── 📁 OAuth
│   │   ├── APIProvider
│   │   ├── NetworkError
│   │   ├── MoyaLoggingPlugin
│   │   ├── 📁 Bundle
│   │   ├── 📁 TargetType
│   │   ├── 📁 DTO
├── 📁 Data
│   ├── 📁 RepositoryImpl
│   ├── 📁 Mapper
├── 📁 Domain
│   ├── 📁 Error
│   ├── 📁 RepositoryInterface
│   ├── 📁 Entity



Coding Convention

인터페이스(프로토콜)와 실구현체

- 프로토콜의 네이밍: 구현하고자 하는 객체 이름 - 실 구현체의 네이밍: 프로토콜 네이밍 + `Impl`
protocol UserRepository {}
final class UserRepositoryImpl {} 

함수명

  • 조회: fetch
  • 수정: update
  • 삭제: delete
  • 생성: create
  • 초기 상태 설정: configure
  • 액션 메서드: ~DidTap

UseCase

  • 단일 메서드일 경우, 메서드 명은 execute로 한다.

Setup Method

func setupNavigationBar()
func setupView()
func setupConstraints()
func setupAction()
func setupDelegate()
func setupDataSource()
func setupBinding()

MARK 주석

- **위, 아래로 한 줄 씩 공백**을 두고 작성합니다.
// MARK: - Property
// MARK: - Initializer
// MARK: - Life Cycle
// MARK: - Setup Method
// MARK: - UICollectionViewDelegate (ex)
// MARK: - Private Method

Mapper

DTO → Entity

  • enumstatic method로 구현
  • 메서드 네이밍: map(with dto:)

라이브러리 선언

  • 퍼스트 파티와 서드 파티를 분리
  • 순서는 무조건 알파벳순
import Combine
import Foundation

import CombineMoya
import Moya

반복되는 숫자, 문자열 등 선언

  • 객체에서 반복되는 숫자, 문자열 등에 대해서 중첩 타입으로 Constant를 정의하고 타입 프로퍼티로 선언한다.
final class CustomView: UIView {}

// MARK: - Constant

private extension CustomView {
	enum Constant {
		static let padding: CGFloat = 16
	}
}