기존의 코드를 외부의 동작방식에는 변화 없이 내부 구조를 변경해서 재구성하는 작업 또는 기술.
리팩토링을 하면 코드 내부의 설계가 개선되어 코드를 이해하기가 더 편해지고, 변화에 효율적으로 대응할 수 있다.
결국 생산성이 올라가고, 코드의 품질은 높아지며, 유지보수하기 용이해지고, 견고하면서도 유연한 제품을 개발할 수 있다.
사용자와 비즈니스 프로세스와 그에 따른 요구사항은 끊임없이 발전하고 바뀐다. 그 외 기술도 시간이 지남에 따라 바뀌고 운영되는 환경도 달라진다. 이러한 변화는 소프트웨어 프로덕트가 더 이상 사용되지 않아 폐기될 때야 멈춘다. 우리는 이러한 변화를 어떻게 잘 대처할 수 있을까?
객체지향 설계 속 가장 염두에 둬야 할 사항은 미래의 변화를 어떻게 대비할 것인가이다. 당장도 바쁜데 이런 번거로운 작업들이 요구되는 이유는 객체지향 기술 자체가 지니는, 변화에 효과적으로 대처할 수 있다는 기술적인 특징 때문이다.
가장 좋은 대책은 변화의 폭을 최소한으로 줄여주는 것이다. 두 명의 개발자에게 동이한 기능 변경을 요청했을 떄, 한 명은 코드 몇 줄만 수정하고 테스트까지 5분이 걸렸고, 다른 개발자는 기능 변경하는 데 5시간, 테스트까지 불가능하다면 어떤 개발자가 미래를 잘 준비한 것일까?
당연 전자다. 이에는 분리와 확장을 고려한 설계가 필요하다.
모든 변경과 발전은 한 번에 한 가지 관심사항에 집중해서 일어난다. 그러나 변화는 대체로 집중된 한 가지 관심에 대해 일어나지만 그에 따른 작업은 한곳에 집중되지 않는 경우가 많다. 예로 DB 접속용 암호를 변경하려고 DAO 클레스 수백 개를 수정해야 한다면 얼마나 끔찍할지 모르겠다. 그래서 우리는 한 가지 관심이 한 군데에 집중되도록 만들어야 한다. 즉 관심이 같은 것끼리는 모으고, 관심이 다른 것은 따로 떨어져 있게 하는 것이다.
관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능한 한 따로 떨어져서 서로 영향을 주지 않도록 분리하는 것이다.
[토비의 스프링] 스프링 IoC 파헤치기 - 용어 완벽 정리 (0) | 2022.07.22 |
---|---|
[토비의 스프링] 스프링 IoC 파해치기 - 빈, 빈 팩토리, 애플리케이션 컨텍스트 (0) | 2022.07.20 |
[토비의 스프링] 스프링의 IoC 공부 전 꼭 알아야 하는 팩토리 (0) | 2022.07.19 |
[토비의 스프링] 나도 모르게 사용하고 있는 스프링의 기본 구성 (0) | 2022.07.16 |
댓글 영역