正式项目要求单入口,单出口。可是写起来需要多入口,实际上确实是单入口,单出口。实现方法举例说明。
void func(void* v1, void* v2, void* v3, void* v4, void* v5)
{
对 v5 进行处理;
void func(v1, v2, v3, v4);
}
void func(void* v1, void* v2, void* v3, void* v4)
{
对 v4 进行处理;
void func(v1, v2, v3);
}
void func(void* v1, void* v2, void* v3)
{
对 v3 进行处理;
void func(v1, v2);
}
void func(void* v1, void* v2)
{
对 v1, v2 进行处理;
}
这样,不论调用它们中的哪一个,实际上最终都是调用 func(void* v1, void* v2),实现了单入口。
然后下面这个是类似递归的方法。
{
if (应该先处理 v1)
DealV1(v1, v2);
if(应该直接处理 v2)
DealV2(v2);
}
DealV1(void* v1, void* v2)
{
//处理v1
DealV2(v2);
}
DealV2(void* v2)
{
//处理v2
//执行处理完成事件。这事件可以由别处引入。
}
这样兼顾了DealV1, DealV2 的执行顺序,容易和其他地方共同完成一件事。也实现了单入口。不论v1, v2是何种情况都只需要调用 DealWithXX