라떼는말이야
확장성 및 재 사용성을 위한 파일 구조화 (리팩토링) 본문
2명 이상 프로젝트를 협업하면 의사 소통과 더불어 가장 중요한 것이 일관성 있게 개발하는 것이라고 생각한다.
나는 자주 쓰는 속성이나 값들은 한 곳에 모아서 관리하고, 변경될 수 있는 값들은 상수로 관리하는 방식으로 진행했다.
util 패키지 아래에 Constants.kt와 Extention.kt 파일을 만들었다.
Constants.kt
여기서는 상수 값, enum class, object 들을 관리한다.
로그나 API 토큰 정보는 상수로 관리를 하고, 회원 가입 시 비밀 번호 입력 상태나 서버로부터의 응답 상태를 나타내는 enum class를 따로 빼냈고, API 라는 이름의 object로 네트워크와 통신 시 url 을 이 곳에서 따로 관리를 한다.
만약 하드 코딩 되어 있었다면 url에 변화가 생겼을 때 여러 곳에서 모두 변경해야 하고, 누락되는 부분이 존재할 수 있기에 유의미한 작업라고 생각한다.
Extension.kt
여기서는 확장 함수들을 관리한다.
EditText에서 입력 값에 변화가 있을 때 발생하는 이벤트인 afterTextChanged는 3개의 함수를 오버라이딩 해야한다.
( beforeTextChanged(), onTextChanged(), afterTextChagned() )
하지만 3개 함수 모두 필요하지 않기 때문에 확장 함수를 활용해서 반복해서 적어야 하는 의미 없는 코드를 최소화 할 수 있었다.
위 사진에서는 확장 함수를 활용한 부분을 일부 가져온 것이다.
회원 가입 시 입력 창에 입력될 때마다 버튼을 활성화 할 지 결정해야 하기 때문에 리스너를 달아야 했는데 이때 확장 함수를 사용하지 않았더라면 적어도 3배 이상의 코드를 더 작성했어야 했다.
이는 귀찮은 건 둘째치고, 코드를 읽기 어렵게 만들기 때문에 확장 함수를 활용하게 되었다.
strings.xml
앱에 나타나는 글자들도 일관성을 위해 하드 코딩을 지양하고, strings.xml로 추출하여 활용하는 것을 적극 활용한다.
재 사용하고자 하는 문구를 쉽게 찾기 위해 카테고리(?) 별로 구분해 놓았다.
colors.xml
앱에서 사용하는 색들 역시 일관성을 위해 colors.xml에 추출하여 사용한다.
일관성에 있어 문자보다 훨씬 더 중요한 것이 색이라고 생각한다.
다짐(?)
기회가 된다면 코딩 계의 교과서인 클린 코드와 리팩토링2 책을 꼭 읽어 보려고 한다.
'프로젝트 > [안드로이드] 강의 평가 프로젝트' 카테고리의 다른 글
로그인 화면, 회원가입 화면 등 구성 (0) | 2022.01.07 |
---|---|
MVVM 아키텍처 적용 연습 (0) | 2022.01.07 |
액티비티 구조 -> 바텀 네비게이션을 가진 프래그먼트 구조로 변경 (0) | 2022.01.07 |
프로젝트에 사용한 협업 도구들 : Github, Trello, JANDI... (0) | 2021.12.28 |
강의 평가 프로젝트 시작!! (2) | 2021.12.28 |