【发布时间】:2018-05-20 19:19:13
【问题描述】:
想象一下我有这个代码:
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 */ }
}
这会让事情变得更整洁、更简洁,但我现在真正所做的只是让方法变得更长而不是更短。
【问题讨论】:
-
它可以帮助您提高可读性和可维护性,但这取决于方法。它们包含大量代码还是只有几行代码?
-
我想这归结为可读性。如果留在主函数上,bar()、baz() 和 foobar() 会吐出多少代码。此外,它们的相关性是否足以成为主要的
-
如果代码组织是唯一的问题,只需将它们自己粘贴到部分类文件中即可。此外,您可以命名私有帮助方法,这样它们就不会直接跳到自动完成的顶部。
-
@SebastianHofmann 有问题的方法只有11行
-
您的本地函数版本看起来还不错,它将事物保持在最小的必要范围内,同时仍将(我猜)有用的名称放入代码块中。
标签: c# methods refactoring local c#-7.0