问题描述
- C++/C#的函数内嵌问题
- int a()
{
int c=1;
int d=2;
int e=3;
return c+d+e;
}
int b()
{
int c=a();
int d=a();
int e=a();
}
上面是简单例子 函数a里有很多对象,函数b里也有很多对象与a重复,
假设这种情况不可避免,对象有很多修改很不方便。
现在我想调用函数b,却发现调用函数b必须调用函数a,
于是我想把函数a整合到函数b里面去,这样我以后只需要调用一个函数就行了
因为如果我调用函数b时的函数b需要调用很多个函数或者重复调用函数
那么就不好整合函数b了不知道有没有看懂我的意思
解决方案
不明白你为什么要这样做,现代程序设计,为了更好维护系统,通常会把多次调用相同的代码
提炼成一个函数,用微小的性能损失换取代码的可维护性。
所以你这样反着来是不符合常理的,当然如果这段代码只执行了一两次是可以把他从函数里面
整合到调用的地方,但是一个函数最好不要超过100行。
希望能帮到你。
解决方案二:
函数a最好不要放在函数b里面去,函数a就是一个独立的功能,如果函数b里面多次调用到函数a,你觉得不好看的话,可以把b里面一部分相同的代码再次封装成一个函数,在b里面进行调用。
解决方案三:
用C#里面的内部类,用internal关键字把访问权限控制在同一程序集文件里面。实现类似java的内部类的效果。这样可以解决命名冲突的问题。
class ClassB
{
void b()
{
int c=ClassA.a();
}
internal class ClassA
{
public static void a();
}
}
时间: 2024-08-31 09:16:35