《C程序员从校园到职场》一第2章 学校到职场2.1 认清自身不足

简介:

本节书摘来自异步社区《C程序员从校园到职场》一书中的第2章,第2.1节,作者 周兆熊,更多章节内容可以访问云栖社区“异步社区”公众号查看

第2章 学校到职场

C程序员从校园到职场
踏出校门,对于我们整个学习生涯来说,只是“万里长征走出了第一步”。为了使得之后学习和工作的道路走得更加顺畅,我们需要认清自身所学知识的不足,我们需要破除一些有关软件开发的错误观念,我们更需要在学校里面就未雨绸缪地开始培养工作所需的一些技能。

2.1 认清自身不足

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

对于大家“非常熟悉”的C语言来说,我们在学校里面学到的只是皮毛,远远不能满足实际软件开发工作的要求。

我们在学校里面学到的典型的C语言程序如下:

include <stdio.h>
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<0)
   {
      printf("n<0, dataerror!");
   }
   else
      if(n == 0 || n == 1)
      f=1;
   else
      f=fac(n-1)*n;
   return(f);
}

对于以上程序,至少存在如下几个问题。

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

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

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

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

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

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

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

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

相关文章
|
SQL 前端开发 Java
78.【大二实训--《宿舍管理系统》】
78.【大二实训--《宿舍管理系统》】
95 0
|
监控 数据挖掘 项目管理
PMP备考之路 - 汪博士第十二章(项目采购管理)(二)
PMP备考之路 - 汪博士第十二章(项目采购管理)(二)
58 0
|
监控 项目管理
PMP备考之路 - 汪博士第十二章(项目采购管理)(一)
PMP备考之路 - 汪博士第十二章(项目采购管理)
81 0
|
存储 监控 前端开发
PMP备考之路 - 汪博士第十章(项目沟通管理)
PMP备考之路 - 汪博士第十章(项目沟通管理)
105 0
|
项目管理
PMP备考之路 - PMBOK第十二章(项目采购管理)
PMP备考之路 - PMBOK第十二章(项目采购管理)
80 0
|
程序员 项目管理
程序员成长第十九篇:要不要转管理岗?
程序员成长第十九篇:要不要转管理岗?
264 0
程序员成长第十九篇:要不要转管理岗?
|
程序员
程序员是金饭碗?培训班出身没人要,不造假就没工作?
作为一名想从事开发工作的学员,首先应该将“钱”摆在一遍,将兴趣提到首位,有兴趣自然好,没兴趣就应该培养兴趣,摆正心态,才能学有所成。
8073 0
|
算法 程序员 C#