我有一个函数需要分析数据包后决定要做什么。 对于每个数据包代码必须:构建这类代码的最佳方式是什么?
- 读取数据包,超时返回错误代码。
- 检查是否存在腐败,如果是正面记录并且转到1.
- 检查中止数据包,如果是正面记录并返回并中止代码。
- 检查数据包参数的非法性,如果是正数登录,则返回一个无效的参数数据包并转至1.
- 运行数据包的操作,如果失败记录,则使用故障数据包进行响应,转到1.
- 如果数据包是结束数据包,则返回成功。
我的代码如下所示:
Packet p;
for (;;) {
int ret = receive(&p, time);
if (ret == TIMEOUT) {
log("timeout");
return TIMEOUT;
}
if (ret != 0) {
log("corrupted %d", ret);
continue;
}
if (p.type == ABORT) {
log("abort");
return ABORT;
}
ret = check(&p);
if (ret != 0) {
log("invalid %d", ret);
respond(&p, INVALID);
continue;
}
ret = execute(&p);
if (ret != 0) {
log("failure %d", ret);
respond(&p, FAILURE);
continue;
}
if (is_last(&p)) {
finalize(&p);
return 0;
}
}
是否有这个代码是没有必要的嵌套或长期更好的结构化的方式?
这绝对是个人选择,但你对我看起来不错! – Nick 2011-05-05 07:47:42
通常,构建代码的最佳方式是以最简单的方式维护。不要选择一种对你没有意义的模式,只是因为有人告诉你它更好。 – tylerl 2011-06-05 05:42:59