상세 컨텐츠

본문 제목

[토비의 스프링] 객체지향적 리팩토링을 위한 첫번째 관문, 관심사의 분리

SPRING/토비의 스프링

by 개발하는 정복자 2022. 7. 19. 11:54

본문

 

 

[세트] 토비의 스프링 3.1 (총2권) - YES24

『토비의 스프링 3.1』은 스프링을 처음 접하거나 스프링을 경험했지만 스프링이 어렵게 느껴지는 개발자부터 스프링을 활용한 아키텍처를 설계하고 프레임워크를 개발하려고 하는 아키텍트에

www.yes24.com


  리팩토링  

기존의 코드를 외부의 동작방식에는 변화 없이 내부 구조를 변경해서 재구성하는 작업 또는 기술.

리팩토링을 하면 코드 내부의 설계가 개선되어 코드를 이해하기가 더 편해지고, 변화에 효율적으로 대응할 수 있다.

결국 생산성이 올라가고, 코드의 품질은 높아지며, 유지보수하기 용이해지고, 견고하면서도 유연한 제품을 개발할 수 있다.

 

  무한히 변하는 소프트웨어  

사용자와 비즈니스 프로세스와 그에 따른 요구사항은 끊임없이 발전하고 바뀐다. 그 외 기술도 시간이 지남에 따라 바뀌고 운영되는 환경도 달라진다. 이러한 변화는 소프트웨어 프로덕트가 더 이상 사용되지 않아 폐기될 때야 멈춘다. 우리는 이러한 변화를 어떻게 잘 대처할 수 있을까?

 

  왜  

객체지향 설계 속 가장 염두에 둬야 할 사항은 미래의 변화를 어떻게 대비할 것인가이다. 당장도 바쁜데 이런 번거로운 작업들이 요구되는 이유는 객체지향 기술 자체가 지니는, 변화에 효과적으로 대처할 수 있다는 기술적인 특징 때문이다.

 

  어떻게  

가장 좋은 대책은 변화의 폭을 최소한으로 줄여주는 것이다. 두 명의 개발자에게 동이한 기능 변경을 요청했을 떄, 한 명은 코드 몇 줄만 수정하고 테스트까지 5분이 걸렸고, 다른 개발자는 기능 변경하는 데 5시간, 테스트까지 불가능하다면 어떤 개발자가 미래를 잘 준비한 것일까?

 당연 전자다. 이에는 분리와 확장을 고려한 설계가 필요하다.

 

 

  먼저 분리에 대해 생각해보자!  

모든 변경과 발전은 한 번에 한 가지 관심사항에 집중해서 일어난다. 그러나 변화는 대체로 집중된 한 가지 관심에 대해 일어나지만 그에 따른 작업은 한곳에 집중되지 않는 경우가 많다. 예로 DB 접속용 암호를 변경하려고 DAO 클레스 수백 개를 수정해야 한다면 얼마나 끔찍할지 모르겠다. 그래서 우리는 한 가지 관심이 한 군데에 집중되도록 만들어야 한다. 즉 관심이 같은 것끼리는 모으고, 관심이 다른 것은 따로 떨어져 있게 하는 것이다.

 

  관심사의 분리  

관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능한 한 따로 떨어져서 서로 영향을 주지 않도록 분리하는 것이다.

 

 

 

관련글 더보기

댓글 영역