桩代码stub 打桩

这个问题是我自己问的,那时候正在看《程序员的自我修养》。

这段时间又在一些地方看到了stub code。

stub code大概就是占坑的代码,桩代码给出的实现是临时性的/待编辑的。它使得程序在结构上能够符合标准,又能够使程序员可以暂时不编辑这段代码。

举个《C专家编程》中的例子:

我的一位同事需要编写一个程序,要求在某一地点存储每个文件的文件名和相关信息。数据存储于一个结构表中,他决定使用散列表。这里就需要用到可调试性编码。他并不想一步登天,一次完成所有的任务。他首先让最简单的情况能够运行,就是散列函数总是返回一个0,,这个散列函数如下:int hash_filename(char *s){ return 0;}这个函数的效果就是一个散列表还未被使用。所有的元素都存储在第零个位置后面的链表中,这使得程序很容易调试,因为无需计算散列函数的具体值。

——《C专家编程》186-187页。这个hash_filename函数就是一段桩代码吧?而作者的同事可以放心地完成程序的剩余部分,而无需担心散列表。在最后,他可以再激活这个散列表。

另外我在glibc-2.18中,读到/bits/libc-lock.h这个头文件的时候,第一行的注释是这样的:

/* libc-internal interface for mutex locks. Stub version.

而这个文件的内容是一些宏的定义,这些宏的定义都是空的:

#define __libc_lock_define(CLASS,NAME)#define __libc_lock_define_recursive(CLASS,NAME)#define __rtld_lock_define_recursive(CLASS,NAME)#define __libc_rwlock_define(CLASS,NAME)

而在同等的非stub version的头文件中,这些宏的定义是有实质性的内容的。

就像stub在很多情况下的含义有一些微妙的差别。

你可能感兴趣的:(桩代码stub 打桩)