더북(TheBook)

잘 설계된 키는 코드의 양을 줄여준다

잘 설계된 키 패턴은 값을 읽고 설정하는 함수를 생성할 때 작성할 코드의 양을 줄여준다. 예를 들어 엔터티나 객체(예를 들어 customer), 엔터티나 객체 유형에 대한 고유 식별자(예를 들어 198277), 속성명(예를 들어 fname), 공통 구분자(예를 들어 :)로 구성된 키 패턴이 있다고 해보자. 다음과 같이 두 개의 매개변수를 전달받으면 이 함수는 어떤 값이라도 가져올 수 있다.


define getCustAttr(p_id, p_attrName)
    v_key = 'cust' + ':' + p_id + ':' + p_attrName;
    return(AppNameSpace[v_key]);

이 의사 코드 예제에서 getCustAttr 함수는 고객 식별자와 반환될 속성값의 속성명을 매개변수로 받는다. v_key는 키 일부분을 붙여서 생성한 문자열을 담고 있는 지역변수다. 이 키는 표준 명명규칙을 따르고 있으므로 고객의 모든 속성값은 이 함수를 사용해 가져올 수 있다. 이 의사 코드 함수의 마지막 줄은 v_key 변수에 들어있는 문자열로 명시된 키에 해당하는 값을 반환한다. AppNameSpace는 이 애플리케이션의 키와 값을 갖고 있는 이름공간의 명칭이다.

Note 실제로는 이름공간에 대해서도 명명규칙을 적용해야 한다. 예를 들어 고객관리 이름공간은 CstMgtNS로 지을 수 있다.

값을 설정하는 함수도 앞서 예를 든 함수와 비슷하지만 이번에는 매개변수 3개를 전달 받는다. 세 번째 매개변수는 저장될 값을 의미한다.


define setCustAttr(p_id, p_attrName, p_value)
    v_key = 'cust' + ':' + p_id + ':' + p_attrName
    AppNameSpace[v_key] = p_value

Note 현장에서 사용하는 애플리케이션에서는 적절한 에러 체크와 처리 로직을 구현해야 한다. 예를 들어 값 설정 함수의 경우 최소한의 복제본 데이터가 저장됐는지 확인하기 위해 쓰기 작업의 상태를 확인해야 한다. 만약 데이터베이스가 최소한의 복제본을 저장하지 못했다면 에러를 반환하기 전에 재차 몇 번 반복해서 쓰기 작업을 시도하도록 해야 할 것이다.

범용적인 값 설정과 값 읽기 함수를 사용하는 것은 코드의 가독성을 향상시키고, 문자열을 붙이거나 값을 검색하는 것과 같은 낮은 수준의 연산을 반복하여 사용하는 것을 줄이는 데 도움이 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.