C++ c+的调制码+;
我听说最好的做法是“调整”代码,以尽量减少代码对代码其他部分的依赖 如果我有一个C++ c+的调制码+;,c++,parameters,module,C++,Parameters,Module,我听说最好的做法是“调整”代码,以尽量减少代码对代码其他部分的依赖 如果我有一个浮点数: float X = 1000; 以及使用X的函数: void A() { //use X } 函数直接使用X,还是使用这样传递的参数更好: void A(float param) { //use param } A(X); 这样称呼它: void A(float param) { //use param } A(X); 或者简化使用第一个函数?决定某个对象是参数还是全局对
浮点数
:
float X = 1000;
以及使用X
的函数:
void A()
{
//use X
}
函数直接使用X
,还是使用这样传递的参数更好:
void A(float param)
{
//use param
}
A(X);
这样称呼它:
void A(float param)
{
//use param
}
A(X);
或者简化使用第一个函数?决定某个对象是参数还是全局对象的最佳经验法则就是“你会用不同的参数调用它吗?”?也就是说,
A
是否需要不同的X
值
如果X
是一个常量,如字节中的位数或重力常量,则将其设置为常量,不要浪费时间将其作为参数传入。另一方面,如果它可能因调用而异,请将其作为参数
另外,不要进行不必要的模块化。如果你只在一个地方使用
A
,并且A
不是特别长,那么最好把它放在一行中,这样可以减少人们为了理解你的代码而必须阅读的代码量。决定某个东西是参数还是全局的最佳经验法则就是“你会用不同的参数调用它吗”?也就是说,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()
}
如果您仅为函数
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()
}
这个例子很糟糕:
// 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);
这个例子很糟糕:
// 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不同的值吗?也许。目前不会,但在我的代码中,我尝试更多地使用参数,而不是直接访问全局变量,因为我永远不知道我在代码的未来会做什么,并且希望使它成为我非常小心的最动态和可重用的代码。这是一个平衡点在规划未来和实现今天需要的东西之间。太多的泛型而没有相应的即时需求可能会导致无法维护的代码。问题是,a是否会使用与X不同的值?也许。目前不会,但在我的代码中,我尝试更多地使用参数,而不是直接访问全局变量,因为你是否知道我将在代码的未来做什么,并希望使其成为最具动态性和可重用性的代码?我会非常小心。在规划未来和实现今天所需之间需要取得平衡。如果没有相应的即时需求,过多的泛型可能会导致无法维护的代码。这称为依赖注入在上,你可以在上面找到一些文档,解释优点和缺点。Iv'e对此做了一些阅读。我可以看到测试方式的明显好处。有什么缺点?这叫做依赖注入,你可以在上面找到一些文档,解释优点和缺点。Iv'e对此做了一些阅读。我可以看到明显的好处在测试的过程中,会有什么负面影响?