개발자

프로젝트 리팩토링 어디까지 진행하는 것이 좋을까요?

2024년 04월 05일조회 1,512

백엔드 개발자를 꿈꾸는 취업준비생입니다. 지금까지 팀 프로젝트, 개인 프로젝트 등 여러가지 사이드 프로젝트들을 진행해왔습니다. 이 과정에서 새로 배운 기술들, 제대로 활용하지 못했던 문법 등 다양한 것들을 공부하면서 이전에 작성했던 코드들을 바라볼 때 어떤 시야로 바라보시는지 궁금합니다. 예를 들어 먼저 진행했던 a 프로젝트에서 api 응답 방식을 단순히 ResponseEntity를 활용해왔다고 가정하고, 이후 진행한 b 프로젝트에서 응답 형식을 커스텀한 DTO 클래스를 활용했다고 가정했을 때 b프로젝트에 활용한 방식이 더 낫다고 느껴진다면 a프로젝트에 해당 부분을 리팩토링 하는 것이 좋은 공부 방법인가요? 새로운 것을 계속 공부하고 프로젝트마다 다른 방식을 적용하게 되면서 이전 코드를 바라보면 “왜 이렇게 짰지?”라는 생각도 들고 뭔가 이걸 개선했던 이유들을 되돌아보며 얻는 것들이 있다고 생각해서 개인 공부 목적의 프로젝트 외에 진행했던 사이드 프로젝트에 관한 리팩토링은 크게 진행하지 않고있습니다. 다른 개발자분들은 어떤 기준으로 리팩토링을 진행하고 어떤 공부방법을 선호하시는지 궁금하여 질문 남깁니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

인기 답변

brilliantguy님의 프로필 사진

제목이랑 본문이 다른 질문을 하는 거 같아서 먼저 어디까지 하는게 좋냐는 제목의 질문을 볼게요. 답을 하기 전에 양극단을 한 번 보죠. 극단적으로 리팩터링에만 몰두하고 기능추가를 안하면 엔지니어 이력서에는 리팩터링만 남고 회사가 망해서 월급이 끊길겁니다. 반대로 기능추가에만 몰두한다면 나중에 스파게티가 된 코드베이스 때문에 기능 추가가 매우 더뎌 엔지니어 이력서에 밀도가 낮아지고 역시 회사가 망해서 월급이 끊기겠죠. 저 양극단 사이에서 줄타기를 할 수 있도록 평소에 리팩터링을 위한 여유를 확보하는 것이 가장 적용하기 쉬운 전략이라고 생각합니다. 개발 소요시간을 측정할 때, 항상 리팩터링을 포함해서 측정하세요. 그런 여유도 주지 않을 만큼 회사가 빡빡한 일정을 요구하면 이직도 옵션에 넣으세요. 위의 두번째 극단의 예시처럼 자살골하는 상황이 올 수도 있으니까요. 그리고 다음은 실질적인 리팩터링 전략에 관한 제 생각입니다. 리팩터링은 미래에 발생할 소프트웨어의 유지보수 비용을 낮추는 목적을 가진 엔지니어링 활동입니다. 우리는 엔지니어로서 소프트웨어가 요구사항을 반영하도록 만들어야 합니다. 요구사항이 변했거나 혹은 소프트웨어가 요구사항을 오반영한 상황(버그)가 발견되면 소프트웨어를 수정해야 하는데, 위에서 말한 유지보수의 비용은 이 때 소프트웨어의 어느 부분이 변경이 필요한지, 어떻게 변경을 해야 하는지 알아내고 변경을 했을 때 의도대로 변경이 일어났는지 검증을 하는 전 과정을 포함합니다 이런 유지보수의 비용을 이루는 요소들의 관점에서 리팩터링 전략을 찾아내는 것이 적합하다고 생각해요. 유지보수의 비용의 뿌리는 결국 요구사항과 소프웨어어가 어떻게 변했느냐이기 때문에 프로젝트 A에 반영한 리팩토링 전략이 프로젝트 B에도 효과적일 것이냐는 정답이 없습니다. 그 리팩토링 전략이 왜 프로젝트 A에 효과적이었는지, 그리고 프로젝트 B도 그 전략이 효과적일만한 특성을 갖고 있는지 이해가 필요합니다. 그런 숨겨진 특성들을 찾아내고 유형화하는 것이 엔지니어에게 큰 자산이 될 거라 생각합니다.

안희수님의 프로필 사진

개인이나 팀 프로젝트는얼마든지 가능하지만 회사 프로젝트는 아마 못할거라고 생각합니다

lepffm님의 프로필 사진

최근 출간된 Kent Beck 의 [Tidy First]를 추천 드립니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 04월 05일

프로젝트 리팩토링은 아래와 같은 기준을 가지고 결정하는 것이 좋습니다: 1. 코드의 품질 개선: 이전 프로젝트의 코드가 새로운 스펙, 요구사항, 또는 보다 나은 코딩 관례에 맞게 활용될 수 없다면 리팩토링이 필요합니다. 예를 들어, 코드 중복이 많거나 설계가 부적절한 경우, 성능 개선이 필요한 경우 등입니다. 2. 유지보수성 향상: 프로젝트가 계속해서 발전하고 변화하므로 유지보수성을 고려하여 적시에 리팩토링해야 합니다. 즉, 명확하지 않거나 복잡한 로직을 간소화하도록 노력해야 합니다. 3. 학습 목적: 새로운 것을 배우게 되면 그것을 적용하기 위해 이전 코드를 수정하는 것은 좋은 학습 방법입니다. 이 과정에서 자신이 왜 그런 선택을 했는지, 어떻게 개선될 수 있는지 등에 대해 깊이 생각할 기회가 됩니다. 그러나 리팩토링의 범위를 결정할 때는 주의해야 합니다. 모든 것을 완벽하게 하려고 노력하지 마세요. 리팩토링도 시간과 노력이 필요하기 때문에 적절한 트레이드오프가 필요합니다. 가장 큰 문제점부터 해결하고, 시간과 노력에 비해 가장 큰 효과를 낼 수 있는 부분부터 개선하는 것이 좋습니다. 그리고 이전 프로젝트의 코드를 반성하거나 비판하는 것은 자신의 성장을 볼 수 있는 좋은 기회입니다. 그래서 많은 개발자들이 이전에 작성한 코드를 되돌아보며 공부하는 방법을 선호합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!