总结

就本次作业中的几个问题说明如下:

  1. readme的要求在题目中明确给出,但是很多同事还是没有能够做好。另外,多看看一些开源代码,能够帮助大家理解如何写好readme;readme的作用:不是说明实现原理,技术细节,而是使用步骤,编译步骤等。
  2. 可执行文件的问题。提交的作业,点击exe基本上不可执行。有两位同事基本考虑到这个问题,一位是余海,一位是王焕林,但是做的还不够好;
  3. 关于“错误码的定义和错误信息的定义必须一一对应”问题,有方桂烽、潘唐磊两位同事有这个问题,这里应该是可以优化的;
  4. 关于“Debug和warning级别也使用错误码的形式实现”问题,有李泽奇、彭京思、王焕林、阎煦洲四位同事是这样实现的,这和题目的要求不明确可能有问题,但是我们不建议,也不欣赏这样的实现。因为debug和warning级别的信息输出,一般是工程师为了调试代码,跟踪流程时候使用的,最后这部分代码都不会被编辑到可执行文件中。在调试开发中,如何还要先定义枚举值,再定义错误信息,使用起来会特别麻烦。所以debug和warning部分应该像使用printf一般方便。而error的信息一般会编译到我们发布的可执行文件中,记录产品在使用过程中特殊情况下出现的重大错误,并且以文件的信息保存下来。这部分信息一般会对信息进行编号,也就是大家熟悉的error Number。
  5. 关于“大量使用对TRUE,FALSE值的封装。使用的这种封装值得商榷”问题,有李泽奇、万义康两位同事这样实现,但是我个人是不建议如此。原因有一下两点:1.影响代码阅读的连贯性,有时候,还真不好理解,让代码晦涩;2.调试起来并不方便,例如我在知道了ipVersion的值不正确之后,我最想知道的就是这个值现在是什么,那么,怎么调试呢?
  6. 关于“大片调试信息的输出问题,例如使用for循环输出packet的内容”。建议单独使用函数输出,这一点彭京思做的很好。彭彬可以参考他的实现。

这次主要是看过大家的readme和源代码。对大家的完成情况作一个评比:

优秀:钟奕涛

良好:余海、彭彬、付大军、陈可

其他未上榜的同事的就是属于一般。

周川添

钟奕涛

余海

阎煦洲

王焕林

万义康

彭京思

彭彬

	int i;
	for (i = 0; i < 6; i ++)
	{
		DEBUG_PRINTF("%02x ", frameHeader->MAC_dst[i] & 0xff);
	}
	DEBUG_PRINTF("\nMAC source: ");
	for (i = 0; i < 6; i ++)
	{
		DEBUG_PRINTF("%02x ", frameHeader->MAC_src[i] & 0xff);
	}
	DEBUG_PRINTF("\nType: %04x\n", frameHeader->type);

潘唐磊

李泽奇

付大军

方桂烽

陈可