- 编写高质量代码:改善C程序代码的125个建议
- 马伟 著
- 1790字
- 2025-03-16 17:14:06
前言
为什么写作本书
众所周知,C语言是一门既具有高级语言特点,又有汇编语言特点的通用计算机编程语言,无论是操作系统(如Microsoft Windows、Mac OS X、Linux和UNIX等)、嵌入式系统与普通应用软件,还是目前流行的移动智能设备开发,随处都可以看见它依然矫健的身影。它能够轻松地应用于各类层次的开发中,从设备驱动程序和操作系统组件到大规模应用程序,它都能够很好地胜任。毋庸置疑,它是二十几年来使用最为广泛、生命力最强的编程语言,它的设计思想也影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
尽管C语言有着悠久的历史和广泛的使用场景,但它依旧让大部分计算机编程人员望而生畏,相信绝大多数读者也还停留在“入门者”这个阶段。所谓“入门者”指的是已经可以简单使用C语言编写普通应用程序,但是却不明白如何编写高质量代码的人。面对这样的实际情况,在准备编写本书之前,一连串的问题深深地映入笔者的脑海:到底什么样的编程书籍才能够帮助“入门者”快速进阶?面对市面上众多的优秀C语言编程书籍,编写本书的价值何在?怎样的内容才能够与众不同?
带着这一连串的问题,笔者开始回顾自己这些年的开发生涯,发现如下几类问题经常困扰“入门者”:
□ 基础数据类型问题:如数据取值范围、整数溢出与回绕、浮点数精度、数据类型转换的范围检查等。
□ 数组与指针问题:指针与地址、野指针、空(null)指针、NULL指针、void指针、多级指针、指针函数与函数指针,以及数组越界与缓冲区溢出等。
□ 内存管理问题:内存分配、内存释放、内存越界与内存泄漏等。
□ 字符与字符串问题:串拷贝与内存拷贝,内存重叠与溢出,字符串查找等。
□ 高效设计问题:表达式设计、算法设计与函数设计,内联函数与宏的取舍等。
□ 其他杂项问题:信号处理、文件系统、断言与异常处理、内嵌汇编的使用等。
如果你同样也苦于处理这些问题,或者对这些问题模棱两可,那么本书正是为你所准备的。本书为普遍存在于初级与中级开发者脑海中的那些问题给出了经验性的解决方案。全书分为15章,通过125个建议深度剖析C语言程序设计中的常见性问题,并给出经验性的解决方案。除此之外,为了使读者能够尽量做到“知其所以然”,本书重点阐述了一些尖锐的问题,如IEEE 754浮点数、指针与数组、越界与溢出等问题。当然,这些经验和心得的积累并非我一人之力,“我只不过是站在巨人的肩膀上而已”。因此,在撰写本书的过程中也参考了大量的资料,如www.securecoding.cert.org的《SEI CERT C Coding Standard》、ISO/IEC 9899:1990、ISO/IEC 9899:1999与ISO/IEC 9899:201x标准文档等。
如何阅读本书
本书适合那些有一定C语言基础并希望快速提升程序设计能力的初级与中级程序员。因此,本书并不会阐述C语言中的一些基础概念,而是将C语言编程过程中可能遇到的疑问或者障碍进行一一列举与剖析,并给出了经验性解决方案与建议。
如果你是一位有一定C语言编程基础的初中级读者,本书就是为你量身打造的。你可以逐章进行系统性学习,并结合我们提供的源码动手实践,巩固所学的知识。书中的大多数建议实战性很强,要完全理解其中的奥妙,请果断地放弃printf函数,多调试一下程序,编程高手都是调试出来的;如果你是一位编程经验非常丰富的高级读者,那么可以将书中的大部分经验与自己的一些经验进行融合,从而获得更多提高与升华。
资源及勘误
通常情况下,一个问题的解决方案往往不止一种,你可能会不同意本书中的一些观点,甚至强烈反对。同时,尽管笔者在本书的写作过程中非常认真与努力,但由于水平有限,书中难免存在错误和不足之处,恳请批评指正。如果你对本书有什么意见、问题或想法,欢迎使用下面的邮箱通知笔者,笔者将不胜感激。当然,也可以通过微信(sc-mawei)与笔者取得联系,共同进行技术交流。
Email:madengwei@hotmail.com
特别鸣谢
最后,要感谢那些所有帮助过笔者的人,没有他们的帮助与付出,这本书很难顺利完成。尤其要感谢下面这些人:
首先,机械工业出版社的杨福川与姜影为本书的整体策划、审阅和出版做了大量的工作,与他们的合作是非常愉快的。同时,由于写作过程漫长,难免令笔者情绪波动,是他们给了我一如既往的支持与鼓励,当我想要放弃的时候,是他们的敦促让我对写作时刻保持着热情,坚持完成本书。也正因为他们对本书的不断要求,才使得本书的结构更加系统化,内容更加深刻,语言更加简单易懂。
其次,要感谢家人的支持。为了编写本书,笔者投入了大量的时间和精力,牺牲了许多可以陪家人的周末和节假日。
最后,要感谢那些曾经为本书的编写提过意见的朋友,感谢他们对本书的默默支持。