
2.3 编程规范及常见问题
2.3.1 注意注释
程序中的注释与程序功能完全无关,因此很多程序员都不愿意在程序中加注释,觉得是浪费时间和精力。但对现在的程序设计而言,注释是相当重要的。有的软件规模较大,而且可能会用很多年,在软件被应用的过程中,可能会发现开发时遗留的一些 bug,或者用户对软件的功能有新的要求,需要修改程序。
无论是修改bug还是修改功能,都需要修改程序。要修改程序必须先读懂程序,而读程序本身比较困难。为了使修改者更容易理解程序,可以采用人与人之间交换信息的语言对程序进行注释。当程序在将来的某一天需要修改时,程序员可以通过这些注释而不是程序本身来了解程序是如何工作的。这将给程序的维护提供了相当大的便利。
注释可以出现在程序开始部分,也可以出现在程序中间。程序开头的注释是对程序整体的介绍。一般包括源文件的名称、程序的功能、作者、创建日期、修改者、修改日期、修改内容等。程序注释可以描述程序中特别复杂的部分的实现方法和过程,给出如何改变程序行为的一些建议等。程序中间的注释可以解释程序中某些变量的意义或特别复杂的程序段。
2.3.2 良好的排版习惯
写程序就如写一篇文章。写文章时,不仅内容要有吸引力、结构要合理、文笔要优美,排版也很重要。一篇好文章如果没有分段、缩进,全挤在一起,想必读者是没有兴趣阅读的。程序也是如此,程序不仅要正确完成预定功能,效率要高,还需要有优美的排版。如代码清单2-1中,函数体中的语句都比函数头缩进若干个空格,使读者一看就明白哪些语句是属于这个函数的。函数中的语句按功能分成若干部分,每个部分之间用空格分开,这样使读者更容易理解函数的功能。
2.3.3 为什么要学C语言
C语言是20世纪70年代出现的一种程序设计语言。此后又出现了很多应用广泛的程序设计语言,如 Python、Java 等。为什么本书选择一个这么“古老”的语言?在技术飞速发展的今天,学习C语言还有意义吗?
在所有的程序设计语言中,C 语言有它独特的地位。如果读者学过一些其他的程序设计语言,会发现它们与 C 语言非常类似。C 语言非常简洁灵活,这些语言都采纳了 C 语言的优点。掌握了C语言后,再学这些语言就非常容易。
作为高级语言,C 语言支持结构化程序设计。同时 C 语言又具有低级语言的功能,非常适合开发系统软件。很多操作系统、编译器都是用 C语言开发的。UNIX系统、手机上的安卓等系统的底层代码都是用 C 语言开发的。苹果的 iOS 系统及上面的软件是用 C 语言的一个变种语言Objective-C开发的。
所以说,C语言不仅是软件开发的基石,而且有强大的生命力。
2.3.4 如何学习程序设计
写程序就如写一篇文章。俗话说,熟读唐诗300首,不会写诗也会凑。学习程序设计也是如此。
首先,要多读别人写过的代码。注意别人代码中解决问题的算法和数据结构,从而拓展自己解决问题的思路,起到举一反三的作用。同时,也要关注别人程序设计的风格。如变量命名、函数的划分及库函数的用法等。
其次,要多练。学习程序设计不能只说不练,一定要经常编写程序。很多细节问题只有在编写程序的过程中才会发现,特别是 debug的过程,即使是简单的语法错误,编译器已经告诉大家错在哪一行、是什么错误,但开始时可能还是完全搞不懂错在哪里、怎么修改。这些经验需要不断积累,而且多练也有助于提高兴趣。当成功地编写出了一个程序,我们就会很有成感。
2.3.5 什么是库
库是一些常用工具的集合,这些工具是由其他程序员编写的,能够完成特定的功能。当程序员在编程时需要用到这些功能时,不需要再自己编程解决这些问题,只需要调用库中的工具。这样可以减少重复编程。例如,输入/输出是每个程序都要用到的功能,C 语言设计了一个库 stdio。程序员编程时需要输入/输出信息时,可以调用其中的函数,而不再需要自己编程实现输入/输出。同理,很多程序都要用到一些数学函数,C 语言提供了一个 math 库。当程序需要用到指数函数、对数函数、三角函数时,不需要研究如何计算这些函数值,而只需要调用math库中的函数。
除了系统的库以外,程序员也可以把自己常用的一些功能设计成一个库。本书将在第12章介绍如何设计和实现自己的库。