防御型编程的strcopy函数

fromdtor 发布于 2013/09/26 22:31
阅读 416
收藏 0
strcopy(源字符串,目的字符串)
1.检查源字符串与目的字符串指针是否为空
2.检查两个指针的地址是不是重叠
3.才是真正的赋值。

结论:工业级的编码其实不是像K&R那么优美!
加载中
1
ihuotui
ihuotui
依然不能防止内存溢出。
0
中山野鬼
中山野鬼

哈。这话我可不认同。你混淆了设计中,松耦合与内聚。

strcopy这类库函数,提供的是一个专属功能的操作。而其功能的实现依赖外部给予,而同时需要外部对给予的资源进行保障。

说点人话就是,各种不同的责任该由谁负责的问题。

工业级的代码,是能说清楚上述这个问题,所以局部是否该做数据检测,是由设计论证描述的。而不是反之,处处说不清楚这个问题,则导致每个函数都要敬小慎微的处处检测。

我不知道“优美”如何定义。工业级的代码在于务实的提高系统的健壮性、稳定性、可拓展性。有效的完成目标功能,以及能在一个业务领域,适应动态问题的调整,就算是好代码,但我不知道这样的代码,是否对应你的“优美”。

而要能做到上述的好代码的设计,系统的分析中,责任的明确是个非常重要的工作。如果每个函数,都需要处处做检测,这等于是对每个函数与函数调用的不信任。这不是系统设计,这只是简单的函数组合而已。会一门语言,会一些库函数的功能,不代表就会系统设计,如同打仗是个阵法,而不是一堆人无厘头的乱跑乱挥棒子。

好的系统,不在于对任意情况任意数据可处理。而在于区分不同情况不同数据,并对可处理的情况和数据进行正确处理。

诸如strcopy的函数,并非一个系统,而是其组成,对于strcopy之类的函数,系统设计的工作在于如何保障它的正确运行,而非额外简单的处处设防。这实际上是系统设计的学问。

如果你可以以strcopy作为反例,认定工业级的编码不够“优美”,那么我只能说,务实有效的大型系统,你还不知道如何设计。

简单说,如果大门的锁和每个房间的锁的原理是一样的,大门如果能被破开,每个房间的锁也自然可以被破解。房间的锁,除了碍事,又有何作用? 哈。系统设计,有个要点,不需要的,一概不需要。为了保证这个能成立,就多出一堆论证和设计来说明。

返回顶部
顶部