내 응용 프로그램은 ID로 int
을 사용하여 메모리와 영구 레지스트리의 개체를 식별합니다. 응용 프로그램의 함수는 id를 인수로 받고, 레지스트리에서 객체를 검색하고 작업을 수행합니다.id 유형 리팩토링
void print(int id, int bar, double zip, int boo)
{
Object *obj = get_obj_by_id(id);
obj->print(bar, zip, boo);
}
응용 프로그램이 발전하여 이제 같은 응용 프로그램에 둘 이상의 레지스트리가있을 수 있습니다. 이제 응용 프로그램은 전역 적으로 액세스 할 수있는 '현재'레지스트리를 사용합니다.이 레지스트리는 전역이하는 것처럼 많은 문제를 일으 킵니다.
글로벌 '현재'레지스트리의 개념을 제거하려면 레지스트리에서 개체를 고유하게 식별하는 유형을 도입해야합니다. 사용중인 int
의 값을 변경할 수 없으므로 ID 번호 int
과 레지스트리의 ID에서 full_id
유형을 만들어야합니다. , 예제 기능은 따라서
void print(full_id id, int bar, double zip, int boo)
{
Object *obj = get_obj_by_id(id);
obj->print(bar, zip, boo);
}
ID 인수의 이름 지정 규칙이있다로 변경해야하지만이 엄격 응용 프로그램 전체 따르지 않는, 그래서 ID 인수의 이름에 대해 가정을 할 수 없습니다 또는 항상 첫 번째 인수입니다. 또한 변경해야 할 많은 기능이 있습니다. full_id
유형화 된 ID로 int
유형화 된 ID를 대체하는 가장 효율적이고 안정적인 방법은 무엇입니까?
+1. – Patrick