c++的调制代码
Modulating Code for c++
我听说最好的做法是"调整"代码,以最大限度地减少代码对代码其他部分的依赖。
如果我有float
:
float X = 1000;
以及一个使用X
:的函数
void A()
{
//use X
}
函数直接使用X
,还是使用这样一个传递的参数:,是更好的做法
void A(float param)
{
//use param
}
这样称呼它:
A(X);
还是简化使用第一个函数?
这个例子很糟糕:
// Define global variable ...
float X = 1000;
// ... and expect A() to work with it ...
A();
// ... because there is a hidden dependency.
这个例子很好:
// Define local variable ...
float X = 1000;
// ... and let A() work with it.
A(X);
// Everything is explicit and clean here.
请注意好的方法允许您以这种方式简化代码:
// Just do it.
A(1000);
决定某个东西应该是参数还是全局的最佳经验法则是"你会用不同的参数调用它吗?"?也就是说,A
是否需要不同的X
值?
如果X
是一个常数,就像字节中的位数或引力常数一样,请将其设为常数,不要浪费时间将其作为参数传递。另一方面,如果它可能因调用而异,那么请将其作为参数。
此外,不要进行不必要的模块化。如果你只在一个地方使用A
,而A
不是特别长,那么你最好把它放在内联中——这将减少人们为了理解你的代码而必须阅读的代码量。
如果您只为函数A()
全局声明X
,那么您不应该这样做。而是在main中本地声明它,并通过参数在函数中传递它。
此外,如果您只是为函数声明X
,并希望修改它的值,则应该通过引用传递它。
void main ()
{
float X = 1000;
A(&X)
}
void A(float *ptr)
{
// Do operations with *ptr which has the value of X in main()
}
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么此串行/调制解调器代码弄乱了我的终端显示
- c++的调制代码
- 如何与GSM调制解调器通信的c++代码