编程语言:谈谈代码复用的机制,变量_函数_类_库_包(一)

导语:    本系列讲述了编程语言当中,有关于代码复用所设计的一些机制和概念,包括变量、函数、类、库和包的概念和作用,属个人见解,欢迎指正。

本文不谈及某个具体的编程语言,旨将其中一些共通的概念进行讲解,以便给于像我这种半路出家的人一种思考的维度。

入正题。

变量

首先我们来谈一谈谈变量,在各种编程语言当中,变量是一种最基础的概念,变量的作用是什么呢?
看个例子

例1:

a=3.1415926*2*r
b=3.1415926*r*r
c=3.1415926*4/3*r*r*r

a,b,c三个公式中,都包含了3.1415926,这么长的数,输入一次的打字时长就得几秒,如果我用π代替,而把π的值定位3.1415926,是不是就可以提高操作的效率了呢?

例2:

π=3.1415926   
a=π*2*r                等价于a=3.1415926 *2*r
b=π*r*r                等价于b=3.1415926 *r*r
c=π*4/3*r*r*r          等价于c=3.1415926 *4/3*r*r*r 

输入操作的代价,比之前的少了许多,有人会说,这不也就少了十几个字符嘛,我也可以复制粘贴,操作的代价都差不多。

试想下,如果不只这几个公式,有几十个,上百个公式需要用到π,那会少掉多少字符?你复制粘贴之后,遇到长一点的公式,一个公式用到好几个π的时候,你的公式得多长,越长是不是看着越乱么?

以上,就是讲解的变量的第一个作用:数据的复用,通过变量,把数据复用到使用变量的地方,使用一次变量也就是使用了一次数据(变量所指向的数据)。

某天因为工作需要,π的值需要改成3.14,那在例1当中我需要手动修改三处;在例2中,我只需要修改一处π的值。

例1:
a=3.1415926*2*r                ->a=3.14*2*r
b=3.1415926*r*r                ->b=3.14*r*r
c=3.1415926*4/3*r*r*r          ->c=3.14*4/3*r*r*r

例2:
π=3.1415926                     修改:π=3.14
a=π*2*r                             ->等价于a=3.14*2*r
b=π*r*r                             ->等价于b=3.14*r*r
c=π*4/3*r*r*r                       ->等价于c=3.14*4/3*r*r*r 

这个就引出的变量的第二个作用:数据的自动更新,当变量指代的数据变动了,之后使用到变量的地方,自动更改为最新的数据值。

这时,有人还会说,变量的这两个作用,常量也可以做到,变量跟常量不就没啥区别了么?那接下来,就要说到变量的第三个作用,也就是变量和常量不一样的地方。

我们需要用到常量的地方,不希望常量的值发生变动,定义了常量之后,在代码运行的过程中常量的值不发生改变。而上边的例子,我们手动修改变量的值,是在变量定义的时候进行了修改,在定义常量的代码中,也是可以修改常量的值,但只限于定义的时候。

但,变量之所以为变量,说的是,在代码运行的过程当中,可以通过代码来修改变量的值,也就是变量的第三个作用:通过代码修改数据,或者说重新赋值。

例3:

π=3.14 
r=0.5

a=π*2*r           
b=π*r*r           
c=π*4/3*r*r*r       

if(r<1)   π=3.1415926
d=π*r*r*r*r
e=π*r*r*r*r*r

在代码执行过程中,通过条件判断如果r<1,则π重新赋值为3.1415926,而不管π之前的值等于什么。这个过程中,我们并不是手动修改π在定义时的值,而是通过代码来给π重新赋值。就是说,π这个变量,在定义之后,是可以根据需要进行数据的修改,重新赋值,这也是变量有别于常量的地方

 

小结:

变量的三个作用:数据替代,数据更新,数据修改。

涉及到的复用机制:数据的复用,更深入一点说,是内存中某个存放数据的空间的复用,在定义常量和变量时,内存中都会指定某个地址的空间来存放数据,相较于常量,变量在代码运行的过程当中是可以改变所存放的数据,变量实则代表着内存的这个地址空间,不管里边的数据如何变化,当用到变量时,就从空间中取出当下存放的数据,而不管程序运行到哪个时间点,空间还是那个空间,数据就不一定还是那个数据,这也是变量之所以为变量的原因,而常量从头到尾都守着那个空间和那个数据,始终如一。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sam_kql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值