我不知道如何构造函数调用。我知道“干净代码规则”说函数应该只做一件事,并且应该让它们尽可能小。我也是这么做的。
但我不确定如何调用这些函数。我不知道如何命名这些概念,但我很难在“函数内部调用函数”或“链接/管道函数”之间进行选择。在下面的示例中,我有一个非常基本的示例,但我希望它能让我谈论的概念变得清晰。
“链接/管道”使代码更容易进行单元测试,您不需要模拟函数。但是“调用内部函数”使代码更短并且可能更具可读性。
您如何选择一种方式或另一种方式?
顺便说一句,我很难寻找这些概念之间的差异,如果有人能给我指出一个好的来源 -那就太好了。
# Calling inside a function
def sum_of_squares(numbers):
return sum([square(num) for num in numbers])
def square(num):
return num*num
numbers = [2,3,4]
square_sum = sum_of_squares(numbers))
print(square_sum) # prints 29
-----
# Chaining/Piping
def sum_of_squares(squares):
return sum(squares)
def square(num):
return num*num
numbers = [2,3,4]
squares = [ square(num) for num in numbers ]
square_sum = sum_of_squares(squares))
print(square_sum) # prints 29
最佳答案
基本上这两种类型的声明都很好并且可用。 您可以根据您想要实现的目标和具体情况选择其中之一。 最重要的方面之一是代码的透明度或可读性。 您始终应该在两种类型的声明之间找到权衡。
如果您在一个(或几个)函数中编写代码,则代码的主流将非常透明和清晰,但是如果任何人(或只是您自己)需要阅读和解释您的代码,您将有总是跳回函数声明,然后如果您在该函数内有其他函数调用,则继续下去,依此类推,这可能非常不方便,并且很可能在一段时间后您会丢失该行。
另一方面,如果您“链接”大量函数调用,就像您所做的第二种方式一样,那么前面的部分(代码的主流)将会增长,并且在一段时间后会变得不那么透明。我的关键经验法则是始终将真正足以理解您最近的代码的内容放在“前面”,并始终选择一些简单的不言自明的函数命名约定,以便以后能够很好地阅读您的代码。另一方面,如果您想使用相同的代码序列,您应该在函数中执行它。在这种情况下,您显然会更喜欢第一种方式。
希望对您有帮助。
关于python - 在 Python 中构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53188517/