checklist
q345852047
这个作者很懒,什么都没留下…
展开
-
编写安全代码——不要用memcmp比较structure
本文的copyleft归[email protected]所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。作者:[email protected]博客:linuxfocus.blog.chinaunix.net 请看下面的代码#include #include #include转载 2012-07-27 16:47:19 · 1154 阅读 · 0 评论 -
函数前置条件和后置条件
前置条件指调用者调用该函数之前必须满足的条件。一般来说,前后置条件都可以转化为assert语句。比如传递个strcpy的参数必须都是有效指针,win32下调用socket之前,必须先调用WAStartup,等等。如果不满足前置条件就调用该函数,是属于调用者的bug;后置条件指该函数在return之前,必须满足的一个约束。 前后置条件一般都包括几个方面:1)参数2)返回值原创 2012-09-07 16:38:06 · 6724 阅读 · 0 评论 -
生存期小于函数生存期的变量不要使用动态内存分配
.函数内部中生存期小于函数生存期的变量不要使用malloc动态分配的变量内存,而应该使用局部变量,因为如果函数被调用很多次,会造成大量的内存碎片而导致内存浪费。例如:函数void tmp(){struct cookie* p = (struct cookie *)calloc(1,sizeof(structcookie));……free(p);return;}原创 2012-09-07 16:33:34 · 1345 阅读 · 0 评论 -
尽量用简单方法处理复杂问题
在大学里,用复杂的逻辑去解决问题。会让老师觉得这个学生很聪明,很有能力。而在公司这样做,只会得到各种鄙视。下面说说采用复杂逻辑解决问题的弊处:1.可控性差。当你的算法复杂了,很多边界问题和异常情况是很难考虑周到的,最后你会被各种段错误、踩内存、异常结果搞的焦头烂额。2单元测试难进行复杂的逻辑对应的一定是高耦合的代码,函数间关联太大,流程间相互依赖强,很多函数原创 2012-10-30 22:45:20 · 2146 阅读 · 0 评论