我听说最佳做法是“调整”代码,以最大限度地减少代码依赖代码其他部分的数量。
如果我有float
:
float X = 1000;
使用X
的函数:
void A()
{
//use X
}
更好的做法是让函数直接使用X
,或使用这样的传递参数:
void A(float param)
{
//use param
}
并称之为:
A(X);
或简化使用第一个功能?
答案 0 :(得分:3)
这个例子很糟糕:
// 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);
答案 1 :(得分:1)
决定某事物应该是参数还是全局的最佳经验法则是简单的#34;你会用不同的论点来称呼它吗?#34;?也就是说,A
如果X
是一个常数,就像一个字节中的位数或引力常数一样,那就使它成为常数,不要浪费时间将其作为参数传递。另一方面,如果电话可能因电话而异,请将其作为参数。
另外,不要不必要地进行模块化。如果你只在一个地方使用A
,并且A
特别长,那么你可能最好把它放在网上 - 它会减少有人拥有的代码数量阅读以理解您的代码。
答案 2 :(得分:0)
如果您仅针对函数X
全局声明A()
,那么您就不应该这样做。
而是在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()
}