java 레거시 코드 효율적 리팩토링
간단한 아이디어와 기초지식으로 효율적 리팩토링 하기
구글 스프레드시트 api 버전이 올라가면서 구버전의 class와 함수를 사용하고 있는 레거시 코드를 고쳐야 했다.
코드량부터 파악해보자.
아..
class(CustomElementCollection
)자체가 대체되기 때문에 class가 선언되고 사용하는 함수들을 모두 변경해야 했다.
대체해야 할 class 선언 변수명이 elements 였다.
아…
너무 많은 부분을 바꿔야하기 때문에, 간단히 정리하여 작업하기로 했다.
변경해야 할 요소들
- 대체 될 class 선언 변수
- 대체 될 class 의 함수
- 대체 될 class 를 파라미터로 사용한 class 함수
정리하고 나니, 대체 될 class 와 같은 함수명을 가지고 똑같은 기능을 하는 함수를 가진 class 를 만들어 대체하면 될 것 같았다.
class를 만들고 변수명을 똑같이 하여 코드 변경을 최소화 하였다.
public void sheetFunc() {
CustomElementCollection elements = row.getCustomElements(); // 구버전
SheetRow elements = new SheetRow(row, columnNames); // 신버전
}
대체 될 class를 파라미터로 사용하는 함수는 extends하여 사용하고 있었는데, 상위 class에서 오버로딩하여 코드 수정 최소화할 계획이었다.
protected int getIntValue(CustomElementCollection elements, String id) // 기존 함수
protected int getIntValue(SheetRow elements, String id) // 오버로딩한 함수
간단한 아이디어와 기초적인 지식으로 대량의 수정을 피할 수 있었다.