대학교 졸업 프로젝트에서 아래의 프로젝트를 진행했다.
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 |