한빛미디어-리팩토링 2판을 읽으면서 공감되는 부분을 작성한다.
직관적인 설계 vs 성능
에 대한것인데, 리팩토링을 하면 기존의 코드보다 퍼포먼스가 떨어지는 경우가 있다.
기존코드는 하나의 loop에서 모든 비지니스 처리를 하는데 반해,
리팩토링한 코드는 기능별로 메소드화 하였기 때문에 loop를 여러번 수행하게끔 되어있다.
본인도 이러한 문제 때문에 어떻게 처리하는게 나을까 생각하긴 했는데 해당 책에서 다음과 같은 말을 하였다.
퍼포먼스가 떨어질 수 있어도, 성능을 튜닝하기는 더욱 쉬워진다. 하드 리얼타임 시스템을 제외한 소프트웨어를 빠르게 만드는 비결은,
먼저 튜닝하기 쉽게 만들고 나서 원하는 속도가 나오게끔 튜닝하는 것이다.
위의 예로든 loop관련해서, 퍼포먼스는 떨어져도 코드의 가독성이 올라갔으며, 수정해야 할 부분이 명확히 들어나게 되어있다. ( 특정 메소드에서 속도가 느려졌을테니)
튜닝 포인트를 찾았으니 그대로 loop를 수행할지, 아니면 다른코드를 튜닝해야할지를 결정하면 된다.
해당 글을 읽으니 예전 기사시험의 내용이였던 "DB를 정규화를 한 이후, 설계 및 기능에 의해 필요한 부분을 한정으로 역정규화를 진행한다."
라는 내용이 생각났다. 무조건 이론에 맞추어 개발할것이 아니라, 1차적으로는 먼저 이론에 맞춘 이후, 다시 변경하는것이 옳다는 생각이 든다.