【发布时间】:2010-06-03 13:10:04
【问题描述】:
如果我有一个从几个地方调用的函数,并且它需要满足某些条件才能执行它所做的任何事情,那么应该在哪里检查该条件?在我的例子中,它用于绘图 - 如果按住鼠标按钮,则执行绘图逻辑(这是在拖动时在鼠标移动处理程序中完成的。)
选项一说把它放在函数中,这样就可以保证被检查。抽象的,如果你愿意的话。
public function Foo() {
DoThing();
}
private function DoThing() {
if (!condition) return;
// do stuff
}
我遇到的问题是,当阅读Foo的代码时,可能与DoThing相差甚远,它看起来像一个错误。第一个想法是条件没有被检查。
那么,选项二是在调用之前进行检查。
public function Foo() {
if (condition) DoThing();
}
这读起来更好,但现在您必须担心从您调用它的任何地方进行检查。
选项三是将函数重命名为更具描述性。
public function Foo() {
DoThingOnlyIfCondition();
}
private function DoThingOnlyIfCondition() {
if (!condition) return;
// do stuff
}
这是“正确”的解决方案吗?或者这有点太过分了?我觉得如果一切都像这样,函数名称会开始重复它们的代码。
关于这是主观的:当然是这样,而且可能没有正确的答案,但我认为它在这里仍然完美无缺。从比我更好的程序员那里获得建议是第二好的学习方式。主观问题正是 Google 无法回答的。
【问题讨论】:
标签: language-agnostic coding-style