1

这可能是一个非常愚蠢的问题,但无论如何我都会问。

有两种方法可以显示此代码:

file = "picture.jpg"
pic = makePicture(file)
show(pic)

或者

show(makePicture("picture.jpg"))

这只是一个如何缩写的示例,我已经看到它与其他功能一起使用。但是当我需要这样做时,它总是让我感到困惑。组合这样的功能时有什么经验法则吗?在我看来,您在进行过程中向后选择函数并以文件或选择文件的函数(即pickAFile())结束。这听起来对吗?

请保持解释足够简单,以便聪明的狗能够理解。

4

4 回答 4

4

插话,因为我认为这种风格确实很重要。show(makePicture("picture.jpg"))如果您从不重复使用"picture.jpg"and ,我肯定会选择makePicture(…)。原因是:

  • 这是完全清晰的。
  • 这使得代码阅读速度更快无需花费比需要更多的时间)。
  • 如果您使用变量,您就是在向阅读代码的人(包括您,在一段时间后)发送一个信号,即变量在代码中的某处被重用,并且最好将它们放入他们的工作(短期)内存中。我们的短期记忆是有限的(在 1960 年代,实验表明一个人一次能记住大约 7 条信息,而一些现代实验得出的数字更低)。因此,如果变量没有在任何地方重用,它们通常应该被删除,以免污染读者的短期记忆。

我认为您的问题非常有效,除非必要,否则您绝对不应该在此处使用中间变量(因为它们被重用,或者因为它们有助于在直接可理解的部分中破坏复杂的表达式)。这种做法将使您的代码更清晰易读,并让您养成良好的习惯。

PS:正如 Blender 所指出的,有许多嵌套的函数调用会使代码难以阅读。如果是这种情况,我建议考虑使用中间变量来保存有意义的信息,这样函数调用就不会包含太多的嵌套级别。

PPS:正如 pcurry 所指出的,嵌套函数调用也可以很容易地分解为多行,如果它们变得太长,这可以使代码像使用中间变量一样清晰易读,好处是不使用任何:

print_summary(
    energy=solar_panel.energy_produced(time_of_the_day),
    losses=solar_panel.loss_ratio(),
    output_path="/tmp/out.txt"
)
于 2013-06-12T01:03:23.760 回答
1

这完全由程序员决定,如果您打算制作一个更大的程序,您可能希望将语句分开,以便您可以参考文件。

如果您与一组程序员一起工作,可读性总是很重要,但如果这只是您自己做的事情,那么做最舒服的事情。

于 2013-06-12T00:48:42.033 回答
1

当你写:

pic = makePicture(file)

您调用makePicturewithfile作为其参数并将该函数的输出放入变量pic中。如果您所做的pic只是将它用作 的参数show,那么您根本不需要使用它pic。这只是一个临时变量。您的第二个示例就是这样做的,并将 的输出makePicture(file)直接作为第一个参数传递给show,而不使用像pic.

现在,如果你在pic其他地方使用,真的没有办法绕过它。如果您不重用临时变量,请选择您喜欢的任何方式。只要确保它是可读的。

于 2013-06-12T00:46:43.207 回答
0

show(makePicture("picture.jpg"))由于其他答案中讨论的原因,它比更长的版本更具可读性。我还发现,尝试消除中间变量通常会产生更好的解决方案。但是,在某些情况下,复杂中间结果的描述性命名会使代码更具可读性。

于 2013-06-13T02:53:21.050 回答