函数的返回值不应为常数

        函数是大多数编程语言中的一种代码单元,返回值是函数的出口,一般情况下,返回值的形式主要有三种:常量、变量、复合表达式。出于易读性、可移植性、可靠性等多方面同代码质量相关方面的考虑,在有些编码规则集中有规则要求返回值不能为复合表达式,而在剩下的两种形式中,“常量”返回值也是不恰当的。。

         返回值作为函数的出口数据,一般是存储的是函数处理的结果,或者是函数处理的状态,如果函数处理的结果或者函数处理的状态是一常量的话,那自然会令人提出以下问题:这个函数处理的意义是什么呢?

        有人会快速的回答说:我通过全局变量或者是参数将处理结果传出去了。为了聚焦讨论的问题,在文中不讨论数据传递方式。可即使是通过其它方式传出了处理结果,那为什么不将返回值定义为void呢?有无返回值不论对于编译链接的效率、还是程序的执行效率以及代码的易读性等诸多方面都是有区别的,看似微小,但的确带来了没有意义的负担和风险。

        另外有些人会回答说:我可以返回多个不同的常量呀。如示例代码中fun_1所示。是的,这种形式的代码无论是在大学课堂上,还是在军工产品中不罕见。但是,如果从代码质量的角度来看,fun_1显然存在两个出口,这违反了结构化设计的原则,关于结构化设计本文不多讨论。另外,对于程序员来说,相对于fun_2,编写fun_1的过程更容易出错,尤其是return语句较多的时,程序员更容易忘记录入某条return语句,原因很明显,fun_2的形式化程度要比fun_1强。

int fun_1(int n_p_1)
{
	if(n_p_1>0)
	{
		return 1;
    }
    else
    {
	    return 2;
    }
}
			
int fun_2(int n_p_1)
{
	int n_ret;
	
    if(n_p_1>0)
	{
		n_ret=1;
    }
    else
    {
	    n_ret=2;
    }

    return n_ret;
}

        既然是在单值得情况下函数返回值类型应定义为void,存在多值的时候在函数结尾处返回一个变量更为恰当,那么一般情况下,应该要求函数的返回值不能为常量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

plstudio1

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

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

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

打赏作者

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

抵扣说明:

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

余额充值