해결된 질문
작성
·
421
1
안녕하세요 영한님!
질문은 처음 드리는거 같습니다~
기본형과 참조형 '문제와 풀이' 시간에
ProductOrder를 리팩토링하는 부분에서 질문이 있습니다.
리팩토링 하는 과정에서 for문 안에서 수행하던 print와 totalAmount를 계산하는 로직을 각각 메서드로 나누었는데요,
이렇게 되면 한번만 수행되던 반복문이 메서드로 나누면서 각각 수행되어 2번이 되는데 이런 부분은 for문이 한번 더 돌게되어 오는 성능이슈보다, 깔끔하게 리팩토링 되는 부분이 더 이점이 큰 부분일까요?
사실 현업에서 업무를 할때도,
for안에서 여러가지 로직이 수행되면 한번에 파악하기가 어려워서 나눠야지 싶어서 나누었지만, 한번만 돌던 반복문이 여러번 돌게 될 수 있어서 망설여지는 부분이 있었습니다.
이 부분 질문드립니다!
감사합니다~
답변 1
7
안녕하세요. suco님 좋은 질문입니다.
성능과 유지보수 측면에는 종종 트레이드 오프가 있습니다.
성능 측면에서는, 분명히 두 개의 for 반복문을 사용하면 처리 시간이 늘어날 수 있습니다. 하지만, 이러한 성능 저하가 실제로 중요한 영향을 미치는지 여부는 여러 요소에 따라 달라집니다. 예를 들어, 반복문이 처리해야 하는 데이터의 양이 많지 않거나, 성능이 그다지 중요하지 않은 경우에는 가독성과 유지보수성이 더 우선시될 수 있습니다.
실무에서 성능 이슈는 대부분 애플리케이션 안에서의 계산 로직 보다는 외부와의 통신, 데이터베이스 SQL과 같은 부분에 좌우되는 경우가 많습니다.
제가 권장하는 방법은 유지보수 측면에서 더 나은 코드를 먼저 고려하는 것입니다. 그리고 성능 테스트를 통해서 정말 문제가 되는 병목 지점을 찾는 것입니다.
특히 이번 예의 경우 반복문의 횟수가 많지 않기 때문에 이런 경우에는 보통 애플리케이션 전체 관점에서 보면 계산 로직이 성능에 거의 영향을 주지 않습니다.
물론 반복해야 하는 데이터 건수가 수만 ~ 수십만 이상이 된다면 성능 테스트를 해보고 최적화를 고려하는 것도 좋겠지요?
도움이 되셨길 바래요.