gpt4 book ai didi

language-agnostic - 最佳实践 - 何时评估函数执行的条件

转载 作者:行者123 更新时间:2023-12-04 07:43:08 25 4
gpt4 key购买 nike

如果我有一个从几个地方调用的函数,并且它需要满足一些条件才能执行它所做的任何事情,那么应该在哪里检查该条件?在我的情况下,它用于绘图 - 如果按住鼠标按钮,则执行绘图逻辑(这是在拖动时在鼠标移动处理程序中完成的。)

选项一说把它放在函数中,以便保证被检查。抽象,如果你愿意的话。

public function Foo() {
DoThing();
}

private function DoThing() {
if (!condition) return;
// do stuff
}

我遇到的问题是,在阅读 Foo 的代码时,可能离 DoThing很远,看来是个bug。第一个想法是没有检查条件。

选项二,然后,是在调用之前检查。
public function Foo() {
if (condition) DoThing();
}

这读起来更好,但现在你必须担心从你调用它的任何地方检查。

选项三是将函数重命名为更具描述性。
public function Foo() {
DoThingOnlyIfCondition();
}

private function DoThingOnlyIfCondition() {
if (!condition) return;
// do stuff
}

这是“正确”的解决方案吗?或者这有点太过分了?我觉得如果一切都像这个函数名称会开始复制它们的代码。

关于这个是主观的:当然是,而且可能没有正确的答案,但我认为它在这里仍然是完美的。从比我更好的程序员那里获得建议是第二好的学习方式。主观问题正是谷歌无法回答的。

最佳答案

根据 DRY,我会选择第一个。

public function Foo() {
DoThing();
}

private function DoThing() {
if (!condition) return;
// do stuff
}

一旦习惯了这种模式,看到一个人就不会那么不安 DoThing()在你的代码中。你会开始像阅读 EnsureThingDone() 一样阅读它.

关于language-agnostic - 最佳实践 - 何时评估函数执行的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com