Programming 版 (精华区)
发信人: SwordLea (飞刀李), 信区: Programming
标 题: 编码的境界——从MOC到COM(原创).2
发信站: 哈工大紫丁香 (2003年11月26日10:48:44 星期三), 站内信件
void main()
{
printf("Hello world!\n");
}
为什么说它是一段完美程序?
首先,程序里没有任何条件分支嵌套。我一向认为条件分支数量与Bug
数量成正比,而条件分支嵌套层数与Bug数量的平方成正比。
其次,程序里没有任何资源的申请与释放。许多时候,在我们自信地
交给最终用户的程序里面总隐藏着大量的没有正确释放资源的语句。其中,
有些是因为某个条件分支跳过了释放资源的语句,有些则是我们拍着胸脯
保证它们会被系统自动释。也许正是由于某个句柄没有正确地关闭,导致
随着程序运行时间的增加,申请的内存越来越多,最后硬盘灯开始不停地
眨眼睛(没办法呀,已经使用虚拟内存了),程序执行效率越来越低。最
终用户不会猜透这个道理,他们只会说,把软件退出来,再进一次就好了。
有个男同学低声说:“那偶就写一大堆这样的完美程序,再编个BAT调
用它们,不就行了么?”我想,旁边那个漂亮的女同学立即会白他一眼:
“小样儿,你是新来的吧?”
书中暗表,这个“新来”的男同学其实已经具备了初步的组件式程序开
发思想,但我们暂且让它被扼杀在摇篮里好了。
继续说这段“完美程序”,除了让老程序员们从它身上看一眼没有Bug
的桃花源,几乎找不到别的作用。现在试着用它实现下面这个批处理程序
的功能:
type ShowCmd.BAT
@Echo off
Echo.
Echo %1
Echo.
这段批处理程序可以显示命令行的第一个参数,并且前后各有一个空
行。没等我的批处理程序写完,就已经有个同学写出了他的C 程序:
void main(int argc, char *argv[])
{
if (argc >= 2)
{
printf("\n%s\n", argv[1]);
}
}
看起来是正确的,但ShowCmd.BAT 在没有参数的时候会显示:
C:\>
ECHO is off.
C:\>
哈哈,没想到吧!(咬牙)好,改成下面的样子:
void main(int argc, char *argv[])
{
if (argc >= 2) /* 一个或多个参数 */
{
printf("\n%s\n", argv[1]);
}
else /* 没有参数 */
{
printf("\n%s\n", "ECHO is off.");
}
}
(欲知后事如何,且听下回分解。)
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.246.238]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.571毫秒