본문 바로가기

개발일지/C#

[C#] 클린코드 - SQL 문자열 가독성 개선하기


오늘은 지난주 만들었던 프로그램을 수정하면서 가독성 향상을 중심으로 수정 작업을 진행함. 기존 방식 그대로 사용하더라도 프로그램이 돌아가는데에는 문제가 없지만, 예기치 못 한 오류나 외부 시스템 변경 등으로 인한 긴급 수정 요청이 들어 왔을 때를 대비해 유지보수가 쉬운 구조로 리팩토링을 진행한 것

 

정렬 전

string sql = "UPDATE TEST_TABLE SET TEST_FLAG = 'C', USER_NAME = '" + ListInfo.USER_NAME + "' , USER_CODE = '" + ListInfo.USER_CODE + "', START_DATE = '" + ListInfo.START_DATE + "' , END_DATE = '" + ListInfo.END_DATE + "', INFO_NAME = '" + ListInfo.INFO_NAME + "' WHERE TEST_ID = '" + ListInfo.TEST_ID + "'";

 

처음에는 위처럼 작성 했다가, 쿼리문 수정하고 디버깅하는 과정에서 몇 번 오류가 남. C#은 처음이다보니 어떻게 정리해야 할지 까마득해서 chatGPT의 도움을 받았고, 실수 부담을 줄이기 위해 줄바꿈 + JS에서 자주 쓰는 백틱(``)과 ${} 구문처럼 `TEST_COL : ${testCol}` 이런 형태로 표현하고 싶어서 물어봤더니 아래와 같은 방식으로 정리해줌 

 

정렬 후

string sql =
    "UPDATE TEST_TABLE SET " +
    $"TEST_FLAG = 'C', " +
    $"SEND_FLAG = 'Y', " +
    $"USER_NAME = '{ListInfo.USER_NAME}', " +
    $"USER_CODE = '{ListInfo.USER_CODE}', " +
    $"START_DATE = '{ListInfo.START_DATE}', " +
    $"END_DATE = '{ListInfo.END_DATE}', " +
    $"INFO_NAME = '{ListInfo.INFO_NAME}', " +
    $"MODIFIED_AT = SYSDATE " +
    $"WHERE TEST_ID = '{ListInfo.TEST_ID}'";

 

문자열을 이을 때 

 "문자열 = '" + 변수명 + "'"  =>  $"문자열 = '{변수명}'" 

+ 연산자로 이어주던 방식에서 변경을 했을 때 간결하고 좀 더 덜 헷깔리는듯? 오예