让你提前认识软件开发(3):学校C语言教材的缺陷

简介: 第1部分 重新认识C语言学校C语言教材的缺陷         我在走出校门的时候非常的“轻狂”,认为自己在学校里面已经学得够多了,工作就只算是小菜一碟。

第1部分 重新认识C语言

学校C语言教材的缺陷

 

        我在走出校门的时候非常的“轻狂”,认为自己在学校里面已经学得够多了,工作就只算是小菜一碟。但在工作中屡次碰壁之后,我才发现自己当时的想法是多么的天真。我们踏上工作岗位,一切几乎都要从零开始。

        对于大家“非常熟悉”的C语言来说,我们在学校里面学的非但不够用,而且在很多地方对大家还有“误导”的作用,让我们认为编程就是那么一回事了。

        我举某知名C语言教材中的“函数”那一章的某程序为例子加以说明。程序如下:

#include 
void main()
{
    float fac(int n);
    int n;
    float y;
    printf("input an integer number: ");
    scanf("%d", &n);
    y = fac(n);
    printf("%d!=%10.0f\n", n, y);
}
float fac(int n)
{
    float f;
    if(n

         对于以上程序,至少存在以下问题:

         第一,变量命名不规范,而且没有初始化。对于该程序,main函数里的变量nyfac函数里面的变量f的命名均不规范,不能让人一眼就看出它是什么意思、要做什么操作。这对于一小段程序来说,影响还不是很大,但如果代码行数达到数千行,那么阅读起来就比较的费力。另外,以上说的三个变量只是定义了,并没有初始化,这在实际项目中也是不允许的。

        第二,函数的命名不规范,且没有在主函数开始之前进行声明。本程序中的fac函数表示什么意思?如果你没有看程序开始之前的文字,那么只有通过阅读函数里面的代码才能知道。在实际项目中,函数命名非常的重要,因为一般涉及到函数个数较多,如果不能通过函数名称来了解其作用,而必须通过阅读代码才能获悉,那么工作效率是很低的。此外,我们一般不在调用该函数的函数的内部来对被调函数进行声明,而是应该将声明放在外部,最好新建一个头文件来对程序里面出现的函数进行声明。

        第三,程序代码排版不工整,“if…else”语句书写不规范。在fac函数中,存在排版不工整的情况。第一个if语句下面的大括号应该与“if”的“i”保持在同一列上,第二个“else”应该与第二个“if”保持在同一列上,“f=1;”和“f=fac(n-1)*n;”应该再缩进4个空格。另外,“if”和“else”下面的执行语句不管有多少行,都应该用“{}”括起来,以方便阅读。

        第四,程序注释过少,函数开头没有注释。一般说来,在程序的关键语句的前面或右边,都应该添加适当的注释,这对程序的理解有辅助的作用。函数fac的前面应该加注释,说明此函数的功能、输入/输出参数、返回值、修改记录等。在整个程序的开头处,也要添加版本信息、修改记录等注释信息,以方便日后查阅。

        第五,程序中出现了“printf”、“scanf”和“main”函数。这是大家都习以为常的,但在实际的项目中,几乎不可能出现这三个函数。因为公司都有自己的开发平台,而且代码都达到数千行,甚至上万行,大部分都不是基于VC开发的,你在哪里去输入,又在哪里去看输出呢?我一进公司,最开始看到程序,就想去找“printf”、“scanf”和“main”,但这是徒劳的,因为根本就没有。关于输入/输出,开发中会有专门的消息处理流程来处理,大家需要知道的就是一个完整的程序不一定非要有上面的三个函数。

 

        短短的几十行代码,就出现了这么多大家“没有想到”的问题。

        看到以上的分析,也许你会很惊慌:我以前的C语言难道是白学了?

        非也!我举这个例子,一不是为了亵渎经典,二不是为了给大家当头一棒。我只是想说明,对于C语言,我们还有很多不知道的东西,即使是自己知道的,也与实际工作存在较大的偏差,大家要虚心学习。我和大家一样,也经历了最开的惶恐阶段,而后才逐渐去改变了自己“根深蒂固”的观念。“知错能改,善莫大焉”啊!

        雄关漫道真如铁,而今迈步从头越!

 

       

        (欢迎访问南邮BBS:http://bbs.njupt.edu.cn/)
        (欢迎访问重邮BBS:http://bbs.cqupt.edu.cn/nForum/index)

        (本系列文章每周更新两篇,敬请期待!本人新浪微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

 

目录
相关文章
|
4月前
|
存储 安全 Java
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
【C++】引用之带你“消除”C语言版数据结构教材的一些困惑(虽然是C++的内容,但是强烈建议正在学习数据结构的同学点进来看看)
40 0
|
物联网 Linux C语言
《嵌入式Linux与物联网软件开发——C语言内核深度解析》一导读
嵌入式Linux与物联网软件开发——C语言内核深度解析 C语言是嵌入式Linux领域的主要开发语言。对于学习嵌入式、单片机、Linux驱动开发等技术来说,C语言是必须要过的一关。C语言学习的特点是入门容易、深入理解难、精通更是难上加难。
3517 0