본문 바로가기

Proj/aDreamLeaf

Hello, Refactoring!

대학교 졸업 프로젝트에서 아래의 프로젝트를 진행했다.

https://github.com/TheperZ/a-Dream-Leaf

 

GitHub - TheperZ/a-Dream-Leaf

Contribute to TheperZ/a-Dream-Leaf development by creating an account on GitHub.

github.com

 

 졸업을 하고 공부를 더 하고, 프로젝트를 진행하다 보니 이 때의 코드는 "돌아는 가는" 코드라는 생각이 들었다. 

대표적으로 드는 생각은 다음과 같았다.

 

1. 대용량 데이터 저장

 

<GDreamCard>
  <head>
    <list_total_count>167458</list_total_count>
    <RESULT>
      <CODE>INFO-000</CODE>
      <MESSAGE>정상 처리되었습니다.</MESSAGE>
    </RESULT>
    <api_version>1.0v</api_version>
  </head>

 위 데이터는 아동급식카드 가맹점 api의 head 부분이다. 프로젝트 발표 한 달 전 해당 api가 업데이트되면서 11,000개 가량이었던 카드가맹점 데이터가 15배 가량 증가하였다. 이에 가게 데이터를 저장하는 데만 11시간 이상이 걸렸다. 이 점을 개선해보고자 한다.

 

2. 지저분한 코드

 for(int i=0;i<infoArr.size();i++) {
                JSONObject temp = (JSONObject) infoArr.get(i);

                //check zip, location if null
                int zipcd;
                double lat, logt;
                String lotno;

                if ((String) temp.get("REFINE_LOTNO_ADDR") == null) {
                    lotno = "";
                } else {
                    lotno = (String) temp.get("REFINE_LOTNO_ADDR");
                }
                if ((String) temp.get("REFINE_ZIP_CD") == null) {
                    zipcd = 0;
                } else {
                    zipcd = Integer.parseInt((String) temp.get("REFINE_ZIP_CD"));
                }
                if ((String) temp.get("REFINE_WGS84_LAT") == null) {
                    continue;
                } else {
                    lat = Double.parseDouble((String) temp.get("REFINE_WGS84_LAT"));
                }

 

해당 코드는 ApiManager 클래스의 일부를 발췌한 것이다. 경기도 아동급식전자카드 가맹점의 정보를 가져는 코드인데, 어딘가 지저분해보이고, 더욱 개선할 방안이 있을지도 모른다는 생각이 든다. 

 

 

 

위의 문제점 외에도 많은 문제점이 있을 것 같다는 생각이 든다. 나는 가게 데이터 관련 기능을 담당했지만, 다른 코드에 대한 리팩토링도 진행할 예정이다. 작은 것 부터 큰 것 까지, 내가 작성한 코드에서 시작해서 점점 다른 코드도 해볼 생각이다.

'Proj > aDreamLeaf' 카테고리의 다른 글

Git Action을 활용한 CI/CD  (2) 2024.08.07
서브모듈 적용  (0) 2024.08.06
가게 정보 관련 RequestDto  (0) 2024.05.19