객체 지향 설계 SOLID 리팩토링

YeongUk·2022년 6월 27일
0

SOLID

목록 보기
1/1
post-thumbnail

리팩토링?

개인차원에서의 경험에서는 개발에 입문하고 코딩을 열심히 해오다보면 어느순간 뒤를 돌아봤을 때,

"아니, 이거 뭐지? 뭐하고 있는 코드지?"
"여기를 바꾸면 어디를 또 바꿔야하지?"

유지보수 또는 기능 추가를 하며 이런 생각을 하신 경험이 있으실텐데요.
이를 미연에 방지하고자 하는 것이 리팩토링 입니다.
사실 제 경험 상, 가장 큰 이유는 확장성을 용이하게 해서 팀프로젝트를 원활히 진행하기 위함에 있습니다.

필요한 시스템을 만들고 유지보수하는 데 비용을 줄이는 것

시스템이 성장할 때마다 새로운 기능을 추가할 때 비용이 증가하는 것은 어쩔 수 없습니다.
하지만 그 증가폭을 줄일 수 있다면 좋은 설계가 되겠지만, 증가폭을 늘리는 설계는 좋은 설계가 되지 못하겠지요.


좋지못한 설계를 맞닥뜨린 개발자는 절망과 함께 도망치고 싶은 욕구를 안겨줄 겁니다.
왜냐하면 열심히 일을 해도 기능 개발이 아닌 엉망이 된 코드를 어떻게든 돌아가게 만드는데 노력하기 때문에 속도를 내지 못하기 때문입니다.

어디서부터 잘못된걸까?

"대충 빠르게 돌아가기만 하면 돼"
"코드 정리는 나중에, 시장을 선점하는게 더 중요해!"

물론 어느 정도는 맞는 말입니다. 시장 선점 효과 물론 좋죠.
하지만 이 둘은 공존할 수 없는 말입니다.

개발을 하다보면 나중은 없는 말입니다.
기능을 구현하고 시장에 진입하고 나면, 바로 다음에 만들어야 할 새로운 기능들이 산더미 같이 쌓여 있지요.

결국 엉망진창이 된 코드가 쌓여 비용은 증가하고 속도도 느려질 것입니다.

그럼 SOLID가 뭔데?

실제로 코드의 기반을 단단하게 고정해주는 역할을 하니까 '단단한'이라는 뜻을 노린거 같긴하지만, 'SRP', 'OCP', 'LSP', 'ISP', 'DIP'의 축약어입니다.
이는 코드를 깔끔하고 효율적이게 작성하는데 유용한 기법이며 앞으로 이 시리즈에서 다루어 보도록 하겠습니다.

profile
소통과 배움을 통해 개인이 가진 맹점을 극복하려 노력하고 있습니다.

0개의 댓글