나는 어떻게 살고 싶은 지, 무엇을 중요하게 생각하는 지
어떤 사람과 함께하고 싶고, 삶을 어떻게 마무리하고 싶은 지
"나"답게 살고 싶다는 생각을 하지만 정작 '나'를 알아간다는 건 쉽지 않습니다.
그러나, BeMe를 사용하는 여러분들은 매일 제공되는 질문들로 자신을 성찰하고 알아가게 되는 경험을 느낄 수 있을 것입니다.
BeMe는 Google의 Kotlin Coding Style Guide를 따릅니다
다음과 같은 순서 클래스를 구성합니다
- Property 선언과 초기화 블럭(intializer blocks)
- 추가적인 생성자
- 메소드 정의
- 컴패니언 오브젝트(Companion object)
- 패키지의 이름은 항상 소문자로 하고, 밑줄을 사용하지 않습니다
- 두 개 이상의 단어를 한 번에 사용하는 것을 지양합니다
- Pascal Case
class BeMe
open class BeMeParent { /* ... */ }
object MoreSampleName : SampleName() { /* ... */ }
- Camel Case
val initList = mutableList<BeMeData>()
fun getList: List<BeMeData>() { /* ... */ }
- Upper Snake Case
- 상수는 companion objet에 넣어 보관합니다
companion object {
const val MAX_COUNT = 8
}
Tab 키를 써서 Indenting 합니다
괄호 뒤에 한 칸을 띄우고 사용합니다
if (elements != null) {
for (element in elements) {
// ...
}
}
- Control문(if/while/for)
- 한 칸 띄어씁니다
- 생성자/Method
- 붙여씁니다
if (isSpacing == true) { /*...*/ }
fun isSpacing() { /*...*/ }
- 변수의 타입/함수 리턴 타입 결정
- 콜론을 앞에 붙인다
- 상속받은 클래스/인터페이스 구분
- 한 칸 띄어쓴다
fun isSpacing(): Boolean { /*...*/ }
class MainActivity : AppCompatActivity()
#{issue_number} [TYPE] : subject
body(optional)
footer(optional)
- BeMe는 이슈 단위 커밋으로 기능 개발을 관리합니다
- GitHub에서 이슈를 트래킹을 할 수 있게 Issue Number를 커밋 메시지에 넣어줍니다
- FEAT: 새로운 기능 개발
- FIX: 버그 수정
- DOCS: 문서 수정/추가
- STYLE: 스타일(xml file) 코드 변경
- REFACTOR: 리팩토링
- TEST: 테스트 코드 추가/테스트 리팩토링(Room, Retrofit 동작 확인을 위한)
- CHORE: Gradle이나 설정 세팅할 때
- Subject는 50글자를 넘어가면 안된다
- 첫 시작은 대문자로 해야한다
- 마지막에 마침표(.)를 찍으면 안된다
- 어떤 변경점이 있는지 설명한다
- 명령조를 사용한다
- 부연 설명이나 커밋의 이유를 설명할 때만 사용
- Not How, Explauin What and Why
- 윗 부분과 1줄의 공백 필요
- 각 라인은 72자 초과 불가
- Issue Tracker IDs를 적을 때 사용
- App Architecture based on MVVM Architecture
-
Android Jetpack
- LifeCycle(ViewModel, LiveData, LifeCycleObserver)
- Room
- DataBinding
- Navigation Component
- ViewPager2
- Android KTX
- Hilt
-
ktlint
-
Glide
-
OkHttp/Retrofit2
-
Kotlin Coroutine
-
Gson
-
CircleImageView
-
ImageCrop
-
Lottie
-
TedPermission
-
Firebase/Firebase Cloud Messaging
-
StickyNestedScrollView
- Room을 이용한 글 임시저장 구현
- BaseViewContoller로 쉬운 DataBinding과 생명주기 관찰
- NestedScrollableHost로 중첩 ViewPager2 이슈 해결
- Status Bar의 색상 바꾸기
- BindingAdapter로 View의 속성 정의, 설정
- DiffUtil을 적용한 ListAdapter
- 검색 필터 바텀시트 구성하고 뷰모델을 통해 값을 받아와 봅시다
- 맨 밑까지 스크롤을 할 때 더보기 버튼 띄우기
- SnapHelper로 RecyclerView에 ViewPager 효과 주기
- 이미지를 원하는 비율로 잘라봅시다, Image Cropper를 이용해서
- MultiPart 서버통신으로 Image 서버로 날려버리기
- 이메일 양식받아서 문의 이메일 보내기