- ➕ [ADD] : TIL 문서나 부수적 코드 추가
- ✅ [MOD] : TIL 문서 및 내부 파일 수정
- 🗑 [DEL] : 쓸모없는 코드 및 파일 삭제
- ✏️ [CORRECT] : 문법 오류 해결, 타입 변경, 이름 변경 등의 작은 수정
- 📄 [DOCS] : README 등의 부수적 문서 개정
- 🚚 [MOVE] : 문서 파일 및 코드 이동
- 🪧 [RENAME] : 파일 이름 변경
- 🔀 [MERGE] : 다른 브랜치와 병합
- ♻️ [REFACTOR] : 전면 수정
Category |
Title |
Link |
Office Life |
의사 전달 시 문서화를 습관화하자 |
🔗 |
Kotlin |
Object를 사용하는 이유 |
🔗 |
Kotlin |
확장 함수 구현 시 메모리를 고려하자 |
🔗 |
Clean Architecture |
도메인 모델에 의존값을 포함하지 말자 |
🔗 |
Coroutine |
ViewModelScope 대신 CoroutineScope를 사용해야 하는 경우 |
🔗 |
Category |
Title |
Link |
Clean Architecture |
Repository를 인터페이스와 구현체로 분리하는 이유 |
🔗 |
Category |
Title |
Link |
Object-Oriented Programming |
재사용이 필요할 때 인터페이스를 적극 활용하자 |
🔗 |
Category |
Title |
Link |
Network |
GET 통신 시에 Body 요청을 지양하는 이유 |
🔗 |
Kotlin |
@Throws를 사용하는 경우 |
🔗 |
Category |
Title |
Link |
Clean Code |
분기 처리 시 다른 조건에 의존적인 조건은 지양하자 |
🔗 |
Category |
Title |
Link |
Data Structure |
불변하면 Set, 순서가 상관 없으면 HashSet, 순서가 보장되어야 하면 MutableSet을 사용하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
플랫폼 타입 사용을 지양하자 |
🔗 |
Category |
Title |
Link |
Coroutine |
withTimeout()으로 코루틴 동작에 타임아웃을 설정하자 |
🔗 |
Android App Architecture |
Repository 또는 DataSource에서 앱 실행 중 캐시가 필요한 데이터를 저장하자 |
🔗 |
Category |
Title |
Link |
Compose |
Modifier.offset()은 다른 컴포넌트와 독립적인 경우에만 사용하자 |
🔗 |
Category |
Title |
Link |
Compose |
Modifier.clip()으로 컴포넌트를 원하는 형태로 자르자 |
🔗 |
Android Studio |
Clean Project를 통해 수정사항을 확실하게 빌드 시키자 |
🔗 |
Category |
Title |
Link |
Clean Code |
사용자 정의 오류보다 표준 오류를 사용하자 |
🔗 |
Category |
Title |
Link |
Compose |
snapshotFlow로 State를 Flow로 변환하자 |
🔗 |
Category |
Title |
Link |
Android Studio |
Kotlin Decompiler로 디컴파일된 Java 코드를 확인하자 |
🔗 |
Category |
Title |
Link |
Network |
URL은 소문자로 구성하되, 단어를 구분할 때는 하이픈(-)을 사용하자 |
🔗 |
Network |
안드로이드에서 딥링크를 구현하는 다양한 방법을 구분하자 |
🔗 |
Category |
Title |
Link |
Clean Code |
객체는 사용하는 경우에만 생성하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
Unit?을 리턴하지 말자 |
🔗 |
Category |
Title |
Link |
Kotlin |
inner class 대신 nested class를 사용하자 |
🔗 |
Clean Code |
타입 파라미터의 섀도잉을 피하자 |
🔗 |
Category |
Title |
Link |
Compose |
Compose의 상태는 메인 스레드에서만 접근하자 |
🔗 |
Category |
Title |
Link |
Android Component |
isTaskRoot를 통해 첫 번째 액티비티인지 확인하자 |
🔗 |
Category |
Title |
Link |
Android Component |
RecyclerView를 구현할 때 Selection 라이브러리 사용을 지양하자 |
🔗 |
Category |
Title |
Link |
WebView |
WebView에 domStorageEnable을 설정하자 |
🔗 |
Category |
Title |
Link |
OkHttp |
Interceptor를 통해 네트워크 UserAgent를 설정하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
inferred 타입으로 리턴하지 말자 |
🔗 |
Category |
Title |
Link |
Clean Code |
결과를 처리할 때는 예외보다 Failure를 활용하자 |
🔗 |
Category |
Title |
Link |
Office Life |
코드 구조를 설계할 때는 설계하지 않았을 때의 문제점을 먼저 파악하자 |
🔗 |
Android App Architecture |
Analytics 로직은 DataSource나 Repository로 분리하지 말자 |
🔗 |
Category |
Title |
Link |
Compose |
Layout Inspector를 이용해 컴포넌트 트리 구조와 리컴포지션 상태를 파악하자 |
🔗 |
Compose |
Scaffold에 paddingValues를 지정하여 BottomBar 크기를 고려하자 |
🔗 |
Category |
Title |
Link |
Analytics Provider Library |
애널리틱스 이벤트나 라이브러리의 추가 및 제거에 대한 리소스를 최소화하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
가변성을 제한하자 |
🔗 |
Category |
Title |
Link |
Glide |
Glide의 onResourceReady()를 통해 load가 종료된 시점에 동작을 처리하자 |
🔗 |
Category |
Title |
Link |
Compose |
점진적으로 Compose로 마이그레이션하는 전략을 사용하자 |
🔗 |
Category |
Title |
Link |
Kakao SDK Library |
카카오 로그인 여부를 확인할 때 토큰 유효성을 확인하자 |
🔗 |
Office Life |
QA 가능한 방법을 고려하여 기능을 개발하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
클래스 생성 중 초기화할 수 없는 프로퍼티는 lateinit과 Delegates.notNull을 사용하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
close 대신 use를 사용하여 리소스를 해제하자 |
🔗 |
Category |
Title |
Link |
WebView |
웹뷰의 shouldOverrideUrlLoading()을 통해 웹 페이지 또는 intent를 처리하자 |
🔗 |
Category |
Title |
Link |
Intent |
인텐트에 액션과 데이터 스키마를 지정하여 다른 앱에서의 처리를 구현하자 |
🔗 |
Category |
Title |
Link |
CRM |
CRM 툴을 통해 개인화된 마케팅 기능을 자동화하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
변수 타입이 명확하지 않은 경우 확실하게 지정하자 |
🔗 |
Category |
Title |
Link |
Compose |
ViewModel을 공유하여 XML 기반의 뷰에서 ComposeView의 상태를 바꾸자 |
🔗 |
Category |
Title |
Link |
CoordinatorLayout |
BottomSheetBehavior를 통해 적절한 CoordinatorLayout 자식 뷰 상태를 지정하자 |
🔗 |
Category |
Title |
Link |
Kotlin |
@DslMarker를 활용하여 외부 리시버 사용을 제한하자 |
🔗 |
Category |
Title |
Link |
Office Life |
새로운 버전의 앱을 배포할 때에는 이전 버전과의 호환성을 확인하자 |
🔗 |
Category |
Title |
Link |
URLEncoder |
URLEncoder를 통해 HTML 형식으로 인코딩하자 |
🔗 |
Category |
Title |
Link |
Analytics Provider Library |
각 애널리틱스 라이브러리의 특성을 이해하자 |
🔗 |
About
신입 안드로이드 개발자의 우당탕탕 오늘 뭐 배웠더라