약 2년 전쯤, 개발 동아리를 하면서 첫 프로젝트이자 첫 해커톤을 진행했다.
[Personal] 지극히 개인적인, 나만의 감각을 찾아주는 Personal
https://github.com/wlsdk9803/personal-onlyFE
위 프로젝트인데, 많이 늦었지만 이 프로젝트에 대해 KPT 회고를 작성해보고자 한다.
첫 프로젝트임에도 시간 내에 계획했던 기능을 모두 구현했다.
해커톤에서 기능을 모두 구현한다는 것은 생각보다 큰 강점이었고, 이것을 통해 4개 팀 중 1위를 할 수 있었다.
하지만 기능만 구현했을 뿐, 심각한 문제가 있었는데...
바로 부족한 실력에 시간에 쫓기다보니 코드의 가독성이나 효율성 따위는 전혀 고려하지 못하고 오로지 구현 그 자체에 집중하게 된 것이다.
당시에도 같은 코드를 계속 ctrl C + ctrl V 하고 있는 그 상황이 뭔가 잘못되었다는 것은 감지했었는데, 어디서부터 어떻게 손봐야 할지 모르겠어서 그대로 두었다...
그리고 이 부분은 두고두고 아쉬운 점으로 자리잡게 되었고, 이후 프로젝트를 할 때에는 같은 실수를 하지 않겠다고 결심했다.
하지만, 프로젝트는 나 혼자 하는 것이 아니다. 아무리 내가 코드의 중복을 없애고 컴포넌트의 재사용성을 높여야겠다고 다짐해도, 팀원들과 원만한 소통이 되지 않으면 서로 같은 기능을 하는 컴포넌트를 각자 만들고 있는 대참사가...발생한다.
이번 주토피아 프로젝트를 진행하면서도 그런 일이 발생했다. 나를 포함한 팀원 3명이 담당한 부분에서 공통 컴포넌트가 존재했다. 그래서 나는 다른 팀원들이 만들어놓은 컴포넌트를 재사용하려고 했는데, 두 팀원들이 만들어놓은 컴포넌트가 분명 같은 기능을 하는 것임에도 로직이 완전히 달라서 이해하는 데에 시간이 필요했다. 심지어 두 코드 모두 재사용성은 고려하지 않고 작성되어 있어서, 두 코드를 재사용성까지 고려해서 합치는 것보다 차라리 새로 만드는 게 훨씬 빠를 것 같다는 느낌을 받았다...
하지만 이미 이전 프로젝트에서 그렇게 흐린 눈을 하고 아쉬움이 남았던터라, 이번에도 그렇게 하면 평생 구현에만 목메고 나중에 후회할 것만 같았다.
그래서 결국 두 코드를 리팩토링 하기로 결심하고, 이틀 내내 해당 컴포넌트를 리팩토링 하는 데에만 시간을 썼다,,
근데 확실히 리팩토링 하고 나니까 가독성도 올라가고, 이후 개발 속도도 더 빨라지는 느낌을 받았다.
그래서 추후 기회가 된다면 처음 만들었던 Personal 프로젝트를 리팩토링 하고 싶다는 생각이 들었다.
일단...프로젝트 코드를 살펴보면 폴더 구조부터 엉망이다.
ColorQ1, ColorQ2, ... 이런 것들이 거슬린다면 그게 맞다.
해당 컴포넌트들은 모두 같은 컴포넌트다...^_^
심지어는 ColorQ1과 MusicQ1도 하나로 통일할 수 있다...ㅋ...
또 저 MusicResult 폴더를 들어가보면
이런 식으로 결과마다 컴포넌트가 따로 따로 만들어져 있다...^_^
당시 결과를 백엔드에서 불러올까 프론트엔드에서 처리할까 고민하다가 프론트엔드에서 처리하기로 했는데, 아무것도 몰랐던 나는 그게 저렇게 컴포넌트를 따로 만들라는 건줄 알았다.
근데 이제 와서 생각해보면 결과 데이터는 json 형태로 저장하고, 컴포넌트는 하나만 만들어서 결과마다 json 파일에서 필요한 부분만 불러오면 되는 거였다.
그리고 또 마음에 안드는 부분이 있는데
여기 보면 Result 컴포넌트가 왜 저렇게 되어있는지 모르겠다...^_^
아마 저걸 만들 당시에는 나름대로 컴포넌트를 분리한다고 한 것 같은데, 오히려 가독성만 해치는 의미없는 분리가 되어버렸다.
심지어 모달은 왜 또 저렇게 되어있는지 아시는 분...? 허허
정말 말 그대로 '총체적 난국'인 프로젝트이지만,
당시에는 첫 프로젝트 치고 꽤 완성도가 있는 프로젝트라고 생각했고, 상당히 뿌듯했던 프로젝트였다.
그래서 사실 건드리기가 너무 두렵고 새로 만드는 게 훨씬 빠를 것 같은 프로젝트이지만, 그래도 이걸 리팩토링해보고 싶어졌다.
언젠가 이걸 리팩토링 하게 된다면 후기를 남기러 와야겠다.
빠른 시일 내에 후기를 남길 수 있길...ㅎㅎ
올~ 굳굳