课设后感-函数内部细化程度的影响

课设后感-函数内部细化程度的影响,第1张

文章目录
  • 前言
    • 一、函数内部的细化程序越高,函数的适用范围越小。


前言

这是课设任务中对于函数体设计上产生的思考,有关代码设计时产生的一些想法。
课设任务名称:学生管理系统。

以下代码均已在VSCode中测试完成。


一、函数内部的细化程序越高,函数的适用范围越小。

我认为函数的细化不是单指某一方面的设计,而是各种各样的语句的添加都是一种细化,例如:在计算期末成绩时,我们使用的公式,也是一种程度一种细化。公式有许多,但是你在众多的公式中选择了其中一种,这就是一种细化。

我切就举例我在学生管理系统这一课设任务中感受最深的一种细化,输入输出语句的细化。

依我来看,我将这种依托于printf/cin、scanf/cout这类最终能够完成输入输出功能的语句看做一种交互部分的细化。添加越多的输入输出语句,函数在某一方面的细化程度也就越高,使用此类函数时被迫受到的束缚也就越多。

下面举例展示输入输出语句这类细化调整到函数内部引发的变化。
例如,依旧是熟悉的max函数,max函数如果原来是这样:

int max(int a, int b)
{
	return a > b ? a : b;
}

若是将函数设计成以下形式,适用的范围则会更小。

int max()
{
	int a, b;
	cout << "请输入第一个数字" << endl;
	cin >> a;
	cout << "请输入第二个数字" << endl;
	cin >> b;
	return a > b ? a : b;
}

函数内部包含不必要的输入输出语句,意味着每次调用的时候都会被迫输出这些语句,提示用户输入。若是想要将这类函数仅仅作为其他函数组成中的一部分,越多的输入输出语句的存在会意味着越多可能会存在冲突的情况发生。

若是想将这种函数作为其他语句或者函数中的一部分可能就会出现下述代码的窘境。

若是我们原先打算让代码写成这样,完成下述的作用:

#include 
using namespace std;

int max(int a, int b)
{
	return a > b ? a : b;
}

int main()
{
	int a, b;
	cout << "请输入第一个数字" << endl;
	cin >> a;
	cout << "请输入第二个数字" << endl;
	cin >> b;
	cout << "二者之中较大的数值大小是:" << max(a, b) << endl;
	return 0;
}

下列代码的设计可能会显得刻意,但是无关紧要。

#include 
using namespace std;

int max(int a, int b)
{
	cout << "请输入第一个数字" << endl;
	cin >> a;
	cout << "请输入第二个数字" << endl;
	cin >> b;
	return a > b ? a : b;
}

int main()
{
	int a, b;
	cout << "二者之中较大的数值大小是:" << max(a, b) << endl;
	// cout<<"二者之中较大的数值大小是:"<
	return 0;
}

函数内代码的细化存在好处,它让分散的输入输出语句和原本的代码融为一体,成为了一个完成的、能够独立完成一个部分功能的代码块,但是同时它牺牲了一些东西——适用的范围。

在注释掉的代码中我调用了max函数,并且将常量3和常量2传入了给形参a和b,本意是想让max函数直接返回其中的较大者的数值,若此时max函数是原先不包含输入输出语句的设计,那么将能够完成任务。

int max(int a, int b)//max函数符合注释掉的代码中的设计
{
	return a > b ? a : b;
}

但可惜不是,此时的这条语句会继续调用max函数中的输入输出语句,再提示用户输入,而不是直接输出比较结果,此时这种max函数就不适用于这种情况了,这就是我所说的函数细化和函数适用范围的减小。

函数体中的输入输出语句越多,细化程度越高,使用此函数时受到的束缚也就越多,也就意味着这类函数越难以被其他语句和函数使用。

提一嘴,在一个小型系统的设计中,我想并不是所有的函数都必须充当主体,应当有着一些函数只是充当着工具的作用,此类函数在保留基础功能而去掉其他细化的设计是很有必要的,它们因此能拥有更广阔的适用范围,越少的细化意味着这种函数能够更好地充当一个工具的作用。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1499275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存