alexnet的程序代码实现及解释_C++实战篇(一),整体把握法高效阅读程序代码

阅读代码是程序员必须掌握的技能之一,然而,对于没有程序设计基础的读者来说,看一堆代码就犹如在看天书,不知从何处下手。接下来的文章主要是向初学者介绍一些阅读代码的常用方法,帮助大家克服对代码的恐惧。

很多初学者问,代码应该怎样读?以怎样的顺序读?

其实阅读代码和读一篇文章是有着相通之处的。我们阅读文章,要看懂它的大意,对每一段快速地扫视。如果它出现了难以理解的地方,再根据它的上下文琢磨它的意思。阅读文章并不是在阅读它的文字,而是在理解它文字中所表达的含义,即语意。

类似地,我们在读一段代码的时候,要尝试看懂它的大意。如果出现自己不熟悉的语句,就应该先去查阅相关的工具书,了解语句的意思。这就如同阅读文章遇到了看不懂的字词,需要去借助词典一样。如果出现了难以理解的地方,可以暂时先放一放(尽管可能看不懂的地方有很多)。坚持把整个代码读完,然后在各个击破。

要注意,在阅读代码的时候也不是在阅读它的语句,而是在理解代码的语意。就好像把交换操作的3个赋值语句拆开,就没有任何意义了。只有把它们3句看成一个整体,我们才能明白哪是交换。

  • 阅读c++代码的顺序

我们现在应该对一个程序的结构很了解了,即:

预处理头文件

各函数声明

主函数

{

主函数体

}

各函数定义

阅读代码的时候并不能直接从上到下依次阅读。刚才已经解释了,我们是要理解代码的语意,并不是阅读语句本身。然而从上到下的依次阅读可能会破坏了这种语义,或者让你觉得更加头昏脑涨。这是因为函数的语意在于调用函数之处的前后,而不是完全在于函数原型或者函数定义中。特别是那些比较长的代码。即使你先看了函数原型,到了调用的地方,早就忘了这个函数是做什么的了。

所以,比较正确的读法是从主函数开始,遇到调用函数,则到前面查阅该函数原型,了解返回值类型和参数的含义。如果有必要,再去查看函数的定义,了解这个函数是怎么运作的。

  • 整体把握语意

所谓整体把握,就是不要太在意细节的部分,只要能够了解语意就行了。比如一个求正弦值的sin函数,我们只需要知道它的功能是求正弦值就可以了。对于它是如何求出一个正弦值的却不感兴趣。所以,如果已经知道一个函数或语句块是做什么用处的在不影响语意理解的情况下没必要对它的实现过程去探究。

那么,我们是如何去了解一个函数或语句块的作用?主要有两个方法。

其一,是猜测。这里的猜测不是漫无目的的乱猜,而是要有根据的,一个优秀的程序员在给变量,函数以及参数起名字时,会考虑到它们实际含义。一般情况下不会出现诸如a1,a2之类不知所云的名称,所以,只需要根据函数原型中的函数名以及函数参数名,就能够对这个函数的作用略知一二。如果有必要,可以在函数的定义中,找到某些具有特征的操作(比如对数组的操作,一般会用size参数控制循环次数),以证实自己的猜测。

其二,是看注释,一个优秀的程序员会有做注释的好习惯,所以,在那些难以理解的代码旁边往往都会有一些注释,以方便阅读者理解。我们在阅读代码的时候,用充分利用好这些注释,这样对理解语意有方向性的指导。

下面我们用整体把握法来阅读一段代码(函数未定义,以下代码无法编译通过)

分析:

首先创建一个数组array,大小为7,故在屏幕上显示的第一句话应该是“The size of array is 7”,至于这个size函数如何求得array的大小,我们不必关心。然后调用了insert函数,查阅函数原型得到一系列信息:其中参数array是操作的数组,position是插入值所在的下标,size是数组的大小,data是插入的值,所以,第一次调用insert函数后,数组内的元素为10,1,3,2,4,5,6,8,第二次调用insert函数后,数组内的元素为10,1,3,7,2,4,5,6,8,接着调用del函数和find函数,根据注释我们知道这个调用的意思是删除元素3,所以屏幕上显示“the number deleted is 3”,这时数组的大小变为8,所以再输出“The size of array is 8”,最后将这些元素一一输出,即:10,1,7,2,4,5,6,8。

本篇完!欢迎大家收藏与转发,下一篇《经验法高效阅读程序代码》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值