우아한 테크코스 1주차를 진행했다. 사실 저번주에 진행했는데 회고 글을 적는게 늦어져서 지금 적는다.
1주차는 구현보다는 알고리즘 구현에 가까운 문제였다.
그러나 구현은 구현이기때문에, 제한사항에 있는 오류를 최대한 반영할 수 있도록 설계하였다.
설계
지금까지 코딩을 할때는 설계보다는 구현에 초점을 맞춰서 했던 것 같다. 그러나 프리코스를 진행하면서 기능명세를 적고 이를 기반으로 구현했기때문에 설계에 보다 집중 할 수 있었다. 물론, 처음에는 익숙하지가 않아서 다 짜놓고 기능명세를 적는 경우도 있었지만.... 시간이 지나며 점점 익숙해질 수 있었다.
설계를 하면서 가장 많이 고민했던 점은 OOP의 클래스 개념을 도입할 것이냐 였다. 그러나 해당 미션은 기능 구현의 변동 범위가 적은 편이며, 이후에 추가 조건이 붙을 가능성이 적었다. 이후 추가 작성이 필요한 부분도 예외처리가 전부라고 판단했고, 예외처리는 validation이라는 전체 함수를 통해 관리되도록 작성하여 추가 class도입 없이 구현했다.
또한 이번 활동으로 설계를 잘못한 경험도 할 수 있었다.
문제 2번은 단계별로 중복되는 문자열을 지워야 하는 문제였다.
알고리즘 문제에 익숙했던 나는 자연스럽게 스택으로 구현했다.
그러나 후에 browoanoommnaon이 지워지는 예시를 보니, 단계별로 문자열이 제거되는 것을 이후에 확인할 수 있었다.
그래서 완전히 갈아엎었다.... 와중에 제출 몇시간 전에 발견해서 급하게 갈아엎었던 기억이 있다. 거의 패닉상태에서 코드를 작성했었는데, 앞으로는 이런 경험을 하지 않기 위해 문제를 좀 더 꼼꼼하게 읽고 제대로 파악해야겠다는 다짐을 하게됐다.
오류처리
지금까지 개발을 하면서 오류케이스에 대한 고민을 제대로 해본 적이 없었다. 1주차 미션을 통해서 처음 고민하였는데, 2주차 미션을 제출하고 난 지금 보니 좀 부족해보인다.
만들어진 오류 체크 함수를 한번에 실행시켜서 return 해주는 checkValidation을 통해서 입력값 검증을 해주었다.
각각의 함수는 boolean값을 가져서 and 연산을 통해 valid한지 검증이 가능해진다.
throw Error를 통해서 처리했으면 조금 더 명확하게 오류명을 보여줄 수 있었을텐데, 그렇게 하지못했던 아쉬움이 남는다.
가독성
선언적인 코드를 작성하기 위해서 노력했다. 이전 프로젝트를 진행하면서도, 프로젝트가 끝나고서 프로젝트 코드를 읽어보면 정말 남이 적은 코드를 보는 것만큼 새로웠던 경험을 한 적이 있다.(미래의 나는 남이니까...)
변수나 함수의 이름이 명확하지 않아서 코드를 읽기위해서 많은 노력을 했어서 이번 미션에는 최대한 명확하게 쓰려고 노력했는데도 부족한 부분이 있었다.
마치 글을 한 편 읽 듯 자연스럽게 읽힐 수 있는 코드를 작성하고 싶다.
커밋
지금까지 프로젝트를 하면서 그다지 커밋 메시지에 신경쓰지 못했는데, 이번 기회를 통해서 커밋컨벤션을 경험해 볼 수 있어서 좋았다. 나중에 프로젝트를 할 때도 적용하여, 누가 어떤 부분을 변경했는지 확인할 수 있도록 해야겠다.
리뷰
솔직히 누가 내 코드를 읽어줄까 하면서 올린 리뷰 요청이었지만 생각보다 자세히 리뷰해주신 분이 계셔서 너무 감사했다.
나도 리뷰 해드리고 싶은데 레벨이 딸려서 그런지 코드를 봐도 오 잘하셨네 라는 생각만 들고, 개선방안이 떠오르지는 않아서 해드리진 못해 아쉬울 따름이다.