Performance 我们应该将O(1)中可以获取的变量传递到嵌套函数中,还是在每个嵌套函数中调用该函数?
下面的例子最好地解释了这个问题。哪个是标准的:(A)还是(B) A)在每个嵌套函数中传递变量:Performance 我们应该将O(1)中可以获取的变量传递到嵌套函数中,还是在每个嵌套函数中调用该函数?,performance,function,parameters,coding-style,standards,Performance,Function,Parameters,Coding Style,Standards,下面的例子最好地解释了这个问题。哪个是标准的:(A)还是(B) A)在每个嵌套函数中传递变量: def条(X,y,n行,n列): #做事。。。。 退货 def foo(X,y,n行,n列): stuff=bar(X,y,n行,n列) #做些事情。。。 退货 B)调用每个嵌套函数中的O(1)函数: def条(X,y): n_行=获取_行数(X)#X.shape[0] n_cols=get_cols(X)#X.shape[1] #做事。。。。 退货 def foo(X,y): n_行=获取_行数(
def条(X,y,n行,n列):
#做事。。。。
退货
def foo(X,y,n行,n列):
stuff=bar(X,y,n行,n列)
#做些事情。。。
退货
B)调用每个嵌套函数中的O(1)函数:
def条(X,y):
n_行=获取_行数(X)#X.shape[0]
n_cols=get_cols(X)#X.shape[1]
#做事。。。。
退货
def foo(X,y):
n_行=获取_行数(X)#X.shape[0]
n_cols=get_cols(X)#X.shape[1]
stuff=bar(X,y)
#做些事情。。。
退货
将行数和列数传递给嵌套函数似乎有点冗长,但另一方面,保持设置变量似乎效率低下。我甚至不太确定是否可以在恒定时间O(1)中获得行数和列数。我用Python编写了这个问题(实际上使用了R),但我的目标是对这个问题进行足够的概括,使其能够应用于任何语言
帮助链接:(建议将其设置为对象以避免使用多个参数) 问题:
B
是首选,因为它避免了更改参数数量或名称时出现的一些问题。选项A
有代码气味,他的解决方案称为B
而且两种方法都有气味。这可以通过重新设计OO并使传递的变量成为类的成员来解决。或者引入全局变量或上下文变量(但这种情况非常罕见)
B
是首选,因为它避免了更改参数数量或名称时出现的一些问题。选项A
有代码气味,他的解决方案称为B
而且两种方法都有气味。这可以通过重新设计OO并使传递的变量成为类的成员来解决。或者引入全局变量或上下文变量(但这种情况非常罕见)
还有一个方面:版本A容易出错。
foo()
或bar()
调用者必须将数组的维度冗余地传递给函数。通过X
传递到n_行
和n_列
没有任何用例,而且,它可能会给出无意义的结果。还有一个方面:版本A容易出错。foo()
或bar()
调用者必须将数组的维度冗余地传递给函数。通过X
传递到n_行
和n_列
没有任何用例,而且,它可能会给出无意义的结果。