【发布时间】:2012-05-10 05:44:50
【问题描述】:
我正在创建一个 function(),但是这个 func() 越来越大,所以我需要将它分解成更小的部分。这是插图:
def myfunc(x,y,z):
out=(x*y*z)+ val
return out
a,b,c=1,2,3
A=myfunc(a,b,c)
print A
假设我想将 (x*y*z) 分离(分解)成另一个这样的函数:
def myotherfunc(x,y,z):
return x*y*z
def myfunc(x,y,z):
out=myotherfunc(x,y,z) + val
return out
这是一个简单的细分,但我得到了另一个工作流程如下:
def myotherfunc(x,y,z)
return x*y*z
def myfunc(xx):
out=xx+val
return out
a,b,c=1,2,3
A=myfunc( myotherfunc(a,b,c) )
print A
结果相同,但对于更复杂的编程案例,哪个工作流程更可取?为什么?
【问题讨论】:
-
这个问题没有明确的答案。这在很大程度上取决于实际情况。您应该始终采用最易读的方法(当然要保留并且通常考虑更重要的其他设计方面)。换句话说,如果你离开你的代码并在一年后回到它,那么哪个流程最有意义? (或者如果另一个程序员遇到它。)
-
@Corbin 感谢 cmets,实际上我是要使用代码的人,没有其他人。好吧,我会考虑“可读”的东西。只是有时作为新手,当我从头开始构建一些东西时,有一些问题直到代码变得更大才可见,而噩梦后来在某个时候我发现我必须重新做任何事情 - 回去开始只是因为我发现我选择了“错误”的工作流程。非常感谢 cmets。
-
稍微详细一点,通常函数的目的将决定它应该如何使用和调用,而不是“工作流程”。您通常希望函数具有 1 个职责。这通常会帮助您确定必须设计您的功能以及它们如何交互。
标签: function logic argument-passing flow