第一章
目前程序库存在的问题:健壮性和设计良好的通用模块库较少;库的大小问题。因此程序库的设计和实现时必须处理好通用性、简单性和有效性,设计和实现同等重要否则将成为一个无任何吸引力的库。目前我们设计的库主要是为“小规模编程”服务,应该取接口集合的最小化来实现。
程序库的描述可采用literate程序表示:接口与实现代码和解释它的语句交织在一起。 Literate程序由英文和带标签的代码块组成。
程序效率问题:任何一个程序系统应该稳定的运行,速度足够快就可以。切勿盲目追求速度导致系统稳定问题,这样是得不偿失的。
查找导致程序运行慢瓶颈的唯一方法就是度量它,避免做不必要的调整(调整可能会产生新的问题)。如果程序在所有的地方运行都慢,可能是设计本身的问题(程序实现应该采用有效算法)。
宏指令和条件编译指令会在一定程度上提高效率,但也注意宏指令陷阱和条件编译指令带来一定的不便之处。条件编译语句的功能:以适应特定的平台或者环境,或者开启与关闭功能模块以及代码的调试。在适应特定的平台或环境时注意平衡代码的可读性,从而取舍。
推荐书目:C语言非常有用的参考书,jaeschke(1991)著的书;Unix编程原理最好的书之一:Kernighan和Pike(1984)著的书;编程风格经典书籍:Kernighan和Plauger(1978),林锐编写的<高质量C/C++>;Sedegwick(1990)描述程序员应该知道的重要算法,Knuth(1973a)对基本算法描述较详细。
学习好的编程风格的最好方法是阅读使用好的风格书写的程序;
学习编写有效代码的最好方法是对算法有全面的基础知识并阅读其他有效的代码。
第二章
模块组成:接口与实现。接口指明模块要做什么,声明了使用该模块的代码可以用的标识符、类型和例程;实现指明是如何完成其接口声明的目标的(注意可重入性)。客户程序是调用某个模块的一段代码。客户程序是导入接口;实现是导出接口。 设计接口应该精确描述接口各个部分,同时尽量减少耦合和对机器的依赖性(或许依赖部分需要不同实现)。C语言仅对接口和实现的分离提供了最基本的支持,但这简单的约定给接口/实现带来很大的好处。
阅读(2309) | 评论(0) | 转发(0) |