백엔드가 오류 코드의 전체 목록을 노출하는 경우 자신의 프론트 엔드 오류 코드가 분리 된 하위 집합 인 진정한 수퍼 집합을 쉽게 만들 수 있습니다.
/* in backend.h */
enum backend_error
{
BACK_ERR_1,
BACK_ERR_2,
BACK_ERR_3,
};
/* in frontend.h */
#include <backend.h>
enum frontend_error
{
FRONT_ERR_1 = BACK_ERR_1,
FRONT_ERR_2 = BACK_ERR_2,
FRONT_ERR_3 = BACK_ERR_3,
FRONT_ERR_4,
FRONT_ERR_5,
};
이 방법은 백엔드 오류 코드의 값에 어떤 가정을하지만 백엔드의 이후 버전이 추가 오류 코드를 정의하는 경우, 당신은 씻어 버렸어요 수 있습니다 강요하지 않습니다
. 또 다른 단점은 헤더 파일
#include
이 백엔드의 헤더이므로 네임 스페이스를 오염시키고 있다는 것입니다.
사용자가 백엔드를 직접 호출하지 않는 경우, 즉 모든 백엔드 기능에 대한 추상화를 제공하는 경우 자체 오류 코드를 모두 정의하고 백엔드 오류 코드를 자신의 것으로 매핑 할 수 있습니다. 이 함수는 ID 함수가 될 필요가 없으므로 나중에 백엔드를 변경하더라도 항상이 함수를 사용할 수 있습니다. 또한 자신의 구현 파일에서 구현되어 백엔드 네임 스페이스를 사용자의 그림 밖으로 유지할 수 있습니다.
전이 문제를 해결했습니다. 프론트 엔드는 백엔드의 오류 코드에 대해 충분히 알고 있어야한다고 생각합니다. 프런트 엔드 오류 코드가 백 엔드 코드의 상위 집합인지 확인하십시오. 백엔드의 처음 1000 개의 번호를 예약하고 나머지는 정면으로 사용할 수 있습니다. –
또 다른 옵션은 오류 코드가 열거 형을 나타내는 일부분을 포함하고 나머지는 열거 형 값을 나타냅니다. –
훨씬 간단한 메커니즘은 모든 백엔드 오류가 음수이고 모든 프론트 엔드 오류가 양수임을 정의하는 것입니다. 그 반대의 경우도 마찬가지이며 '오류가 아님'을 0으로 예약합니다. 시스템 오류를 처리하는 방법을 고려하십시오 (1에서 대략 150까지의 'errno'값은 프론트 엔드 또는 백엔드에 나타날 수 있습니다). O/S를 위해 적어도 1..200을 유지하고 이전과 같이 프론트 엔드와 백엔드를 구별 할 수있는 양수 및 음수 값을 유지하려고 할 수 있습니다. 나는 자체 오류에 대해 100과 121 사이의 오류 번호를 사용하는 소프트웨어에서 작업했습니다. 'errno' 만 50 세가되었을 때도 괜찮 았지만 끝이없는 슬픔을 안겨주었습니다. –