假设我有这样长的方法:
public void SomeLongMethod()
{
// Some task #1
...
// Some task #2
...
}
此方法没有任何重复的部分,应将其移至单独的方法或局部函数。
有很多人(包括我在内)认为长方法就是代码的味道。我也不喜欢#region
在这里使用(s)的想法,并且有一个非常受欢迎的答案来解释为什么这很糟糕。
但是如果我将此代码分成方法
public void SomeLongMethod()
{
Task1();
Task2();
}
private void Task1()
{
// Some task #1
...
}
private void Task2()
{
// Some task #1
...
}
我看到以下问题:
用一个方法内部使用的定义来污染类定义范围,这意味着我应该在某个地方进行文档记录,
Task1
并且Task2
只供内部使用SomeLongMethod
(否则,每个阅读我的代码的人都必须推断出这个想法)。污染将仅在单个
SomeLongMethod
方法中使用一次的方法的IDE自动完成功能(例如Intellisense)。
因此,如果我将此方法代码分成本地函数
public void SomeLongMethod()
{
Task1();
Task2();
void Task1()
{
// Some task #1
...
}
void Task2()
{
// Some task #1
...
}
}
那么这没有单独方法的弊端,但这看起来并不比原始方法更好(至少对我而言)。
哪个版本SomeLongMethod
更易于维护和阅读,为什么?