假设我有这段代码:
public void Foo()
{
// Do bar work
// Do baz work
// Do foobar work
}
而且我意识到我可以(而且应该因为它不止做一件事)将其重构为:
public void Foo()
{
bar();
baz();
foobar();
}
private void bar() { /* do bar work */ }
private void baz() { /* do baz work */ }
private void foobar() { /* do foobar work */ }
但后来我意识到我永远不会在 Foo()
之外使用这些函数,所以这些函数只会让主页和自动完成变得困惑。我可以摆脱这个:
public void Foo()
{
bar();
baz();
foobar();
void bar() { /* do bar work */ }
void baz() { /* do baz work */ }
void foobar() { /* do foobar work */ }
}
这会让事情变得更整洁、更不困惑,但我现在真正做的是让这个方法变得更长而不是更短。
最佳答案
Which would make things neater and less clutter, but all I've really done now is made the method even longer instead of shorter.
不,你没有。您基本上是在说类似的话,就像一个类具有一个完成大量工作的方法和一个完成相同工作但具有多个更短且更易于维护的方法的类之间没有任何区别。
你的本地函数就像方法一样,它们包含在另一个方法中的事实并不排除整体更容易维护;功能封装在明确定义的范围内。
关于c# - 如果只使用一次,使用局部函数有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438563/