https://github.com/next-step/java-ladder-func-playground/pull/51
지금까지 객체지향적인 구현을 한다는 명분하에 추상화를 과도하게 도입해왔던 것 같다. 그런데 그중 많은 부분이 의미 없었고, 내가 불필요한 분리를 참 많이 했다는 걸 이번에 느꼈다.
예를 들어, 사다리 게임이 다른 게임으로 바뀔 수 있다는 이유만으로 추상화를 도입한 적이 있는데, 지금 생각하면 좀 웃기기도 하다.
응집도 있는 코드를 작성하려고 해도, 기존에 분리하거나 추상화를 도입하던 습관 때문에 고민되는 지점들이 많았다. 그럴 때마다 요구사항을 다시 바라보며 근거를 찾으려 했다.
요구사항에 "변경될 수 있다"는 말이 없고, "구현해달라"는 요구가 명확하다면, 의미 없이 추상화를 도입할 필요는 없다고 판단했다. 그리고 이번 요구사항은 꽤 간결했기 때문에 더욱 그러했다.
또한 응집도 있게 구현을 해두면 확장하기도 편리하다는 걸 느꼈다. 하지만 한 번 확장된 코드를 다시 응집시키는 일은 정말 어렵다.
로또 미션에서 이런 부분에 대한 많은 배움을 얻었고, 그 피드백을 바탕으로 이번 사다리 미션에 적용해보았다.
나름 유의미한 변화를 만들어냈고, 스스로 성장한 것 같아 뿌듯함을 느낀다.