C语言接口与实现创建可重用软件的技术读书笔记(1)

本文详细解析如何设计、实现及有效使用C语言库函数,强调接口设计独立性,采用与语言无关的方法创建可重用API。讨论了算法工程、文学程序设计原则、库设计挑战以及代码组织、注释规范等关键点。并通过具体实例展示了strcpy函数的多种实现方式,突出程序可读性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这本书是讲的是“如何设计、实现、和有效使用C语言库函数,掌握创建可重用C语言软件模块技术。重点阐述如何用一种与语言无关的方法将接口设计实现独立出来,从而用一种基于接口的设计途径创建可重用的API“。

1、其中提到的算法工程,也就是包装数据结构以供应用程序使用。

2、文学程序,也就是将一个程序划分成各个模块,模块之间大小不一,可以嵌套。讲述代码的时候尽可能按照最适于理解的顺序给出,而不是按语言所硬性规定的顺序。

3、在程序设计风格中,库的设计和实现是困难的。在通用性,简单性和效率三个约束之间,我们必须小心翼翼,谨慎前行。也就是说以后在自定义函数的时候,参数的类型,参数的个数以及函数的返回值方面也要从这个三方面着手。又因为可靠性比效率更重要,与交付足够快的可靠软件相比,交付快速但会崩溃的软件,从长远看来代价更高。

“程序能否更容易被阅读和理解,比使程序更容易被计算机编译更为重要。”

比如文中提到的一些细节方面,如变量的声明应该靠近于其第一次使用的地方(可能在代码块中);在可能的情况下,局部变量的声明在使用变量的复合语句的开始处;过程和函数的名称,应能反映过程完成的工作以及函数的返回值。

4、关于注释,如果代码很清晰,且使用了良好的命名和缩进惯例,则这样的代码通常是自明的。仅当进行解释时,(例如解释数据结构的细节,算法的特例以及异常情况)才需要注释。编译器无法检查注释是否与代码一致,误导的注释通常比没有注释更糟糕。

5、在谈到库函数strcpy将一个字符串复制到另一个字符串中并返回目标字符串的时候,有下列做法:

① char *strcpy(char dst[],const char src[])

{

int i;

for(i=0;src[i] !='\0';i++)

        {

dst[i]=src[i];

        }

dst[i]='\0';

return dst;

}

② char *strcpy(char *dst,const char *src)

{

char *s=dst;

while(*dst++=*src++);                              /*这里也有人用while((*dst++=*src++) !='\0'); 但这个在一些C编译器和相关工具中,在发现赋值操作的结果用作条件表达式时会发出警告,因为这种用法是一个常见的错误来源。*/

return s;

}

这个为指针版本,它使用通常的惯用法将赋值、指针递增和测试赋值操作的结果合并为单一的赋值表达式。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值