대학생때 단어장 어플리케이션을 하나 만든게 있었어요.
안드로이드도 모르고 자바도 몰랐었었는데.. 오로지 구글 검색만으로 개발했었죠.
단어장 하나 만드는데 학교 도서관에서 거의 살다시피해서 만들었던 기억이...
그때 졸업시즌이였는데 지지리도 프로그래밍도 못하고 내가 이걸로 취직해서 밥먹고 살 수 있을까? 라고 진짜 엄청 고민했었어요.
(아마 이런 고민하는분들 많을거라고 생각함..ㅠ)
어찌어찌 어플리케이션은 완성했습니다.
이게 제 졸업작품이였어요.
어떤 어플리케이션인가는 궁금하신분은 예전에 올렸던 글을 봐주세요.
오유분들이 굉장히 많이 다운받아주셔서 엄청 성취감을 느꼈었어요.
아 이래서 개발하는구나, 나도 하면 되는구나 등등 자신감이 좀 붙었었죠.. (완성한 어플은 처참했지만)
그렇게 저는 졸업을했고, 여기저기 중소기업에 이력서를 넣어서 SI회사에 취직을 했습니다.
첫회사에서 겁나 고생했어요. 진심 ... 편도 두시간인곳으로 지하철 두번 버스 한번 갈아타서 파견을 나가기도 했고요.
그곳에서는 8시30분까지 출근하고 퇴근은 막차끊기기전에 퇴근하는게 일상이였습니다.
저는 IT는 다 이런줄 알았어요. 신입은 다 2000도 안되는 돈 받고 일하는거고 야근하면서 배우는거구나~
1년일하고 우연히 이력서 넣은 지금회사에 이직이되서 지금은 그렇지 않다는걸 알고있지만요....
잡설이 길었네요. 지금부터 리팩토링 일기를 작성해볼까 합니다.
리팩토링을 결심한건 우연히 제 개발자 페이지를 들어갔는데 아직도 제 단어장을 사용하고 계신데 불편한점이 몇가지 있다.
라고 적혀있는 리뷰를 본날부터 시작했습니다. 2년이 지났는데 아직도 쓰시는분이 있구나. 하고 놀랐고.
제 어플리케이션에 버그가 한두개가 아닌걸 확인하고나니 그래도 현직 안드로이드 개발잔데 이건 아니지.. 하면서 고치기로 했습니다.
이전 제 어플리케이션에 상태에 대해서 조금 설명해드리고자 합니다.
1. 모든 클래스들이 하나에 패키지에 다 모여있음
2. 프라그먼트 그게 뭐죠? 모든 비지니스 로직은 액티비티에 있다.
3. sqlite를 사용하였는데, 커서나 데이터베이스를 각각의 액티비티에서 마구잡이로 사용하고 있었음. (심지어 쓰고 close도 안함)
4. 코드들이 포맷팅이 하나도 안되있음. 줄내림 이건 괄호 위치건 코드컨벤션이 뭐죠?
5. 엄청난 네이밍센스 이름짓기가 귀찮았었는지.. 예) word1, word2, word3 WordListActivity1 WordListActivty2
6. 굉장한 커스텀 탭바를 직접 만들어서 사용하고 있었음. 각각 액티비티에 이미지들을 넣어서 클릭리스너로 구현함 (이게 다섯개에 액티비티에 각각 들어있음;;)
- 심지어 롤리팝에선 탭바가 나오지도않아서 아무것도 안됫음...
리팩토링 순서
1. 패키지 정리
그땐 접근제어자에 대한 개념도 없었었나 봅니다.
디폴트 접근제어자로 선언되어있어서 패키지를 분리하는순간 엄청나게 빨간줄이 발생했습니다.
그리고 멤버변수는 무조건 static이 붙어있더군요. ㅋㅋㅋ 클래스는 달라도 우리는 하나!
2. 데이터베이스 정리
0.db 1.db ... 50.db 이런식으로 디비가 들어있더군요.
이건 수정하려고하다가 도저히 하나하나 열어서 고칠 자신이 없어서 그냥 둿습니다...
3. 앱내 디비의 경우 dbManager라는놈을 싱글톤으로 만들어서 요청 -> 쿼리 -> 오브젝트 반환으로 정리했습니다.
렐름을 쓰면 깔끔해질거 같은데 그렇게 하려고보니 그냥 앱을 새로 만드는게 빠르겠더군요.
4. 화면단을 프라그먼트로 나누고 메인 화면에 엄청난 커스텀 탭바를 제거하고 메인페이지에는 뷰페이저를 넣었습니다.
5. 정체불명의 변수명들을 정리하고 머터리얼 디자인을 적용하고 개발 편의성을 위해서 몇가지 라이브러리를 집어넣었습니다.
butterknife, lombok, timber, gson, otto등
otto는 이제 지원이 중단되었더군요.. rxandroid의 시대가 오려나봅니다.
대략 리팩토링에 걸린시간은 주말 4일정도 하루 6시간정도했네요.
안드로이드의 안자도 모르던놈이 많이 발전한거 같아서 뿌듯합니다.
그리고 모든 취업준비를 하고있는 대학생분들 힘내세요.
개인적으로 중견기업이상을 목표로 하시는게 좋지않을까 라는 생각이듭니다.
면접준비는 오유 프로그래밍 게시판에서 가끔 면접때 뭐물어보나요? 라고 글올리면 능력자분들이 이정돈 알아야 뽑아서 쓰지!
라고 댓글해주시는경우가 있었는데 저는 그거 보고 공부했더니 진심 면접가니까 비슷한 내용들이 많아서 덕분에 지금회사 잘 다니고 있습니다...-_-;;
여기서 빈둥님이 적으신 댓글정도만 공부해도...!!
이상입니다. 모니터산 기념으로 열심히 코딩해서 뿌듯합니다.
낼부턴 아예 쌔로 어플하나 만들어보려고 하네요. (깨끗하게 좀 짜봐야지..)
- 끗 -