구글 스프레드시트 api 버전이 올라가면서 구버전의 class와 함수를 사용하고 있는 레거시 코드를 고쳐야 했다.

코드량부터 파악해보자.

code_length
아..


class(CustomElementCollection)자체가 대체되기 때문에 class가 선언되고 사용하는 함수들을 모두 변경해야 했다.
대체해야 할 class 선언 변수명이 elements 였다.

variable_match_count
아…

너무 많은 부분을 바꿔야하기 때문에, 간단히 정리하여 작업하기로 했다.

변경해야 할 요소들

  • 대체 될 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) // 오버로딩한 함수


간단한 아이디어와 기초적인 지식으로 대량의 수정을 피할 수 있었다.