C#之#region的使用

使用#region就是将一些有关联的代码组织在一起,然后折叠起来。这样你就在一个函数中看不到很长的令人头痛的代码段。例如:

publicvoid DoSomething()
{
bool shouldIDoSomething;

#region Decide if I should do something

if(needToDoSomething && haventDoneSomethingThisDay)
shouldIDoSomething =true;
else
{
// do some other logic to decide and set shouldIDoSomething to some value
}

#endregion

if(shouldIDoSomething)
{
done++;
}
}

当然这段代码很简单。在实际项目中,你可能看到上百行甚至更多的代码在一个#region中。如果把它折叠起来。看起来就会很整洁。是吧?

publicvoid DoSomething()
{
bool shouldIDoSomething;

[Decide if I should do something]

if(shouldIDoSomething)
{
done++;
}
}

只是把一些代码和一些变量组合起来放在#region中。如果你在仔细想想,其实我们相当与创建了一个新的函数,只是将这些方法内置到当前函数中。一个函数只做单一的一件事情,这是Clean Code这本书的一个原则。为什么我们不把它提取为一个函数呢,这样一来,一个函数就只做一件事情了。

小段总结1: #region 不适合在大方法中使用,当你在一个方法中使用#region 的时候,停下来想想你刚刚写了什么代码?大多数时候,你可以将这些代码段独立成一个函数。

#region Get Name
public void GetName(){
}
#endregion

#region Set Name
public string SetName(string name){
    return name;
}
#endregion

折叠之后——

[Get Name]
[Set Name]

小段总结2:可以将一组相关的函数提取到一个职责单一的新类中。
那我们到底怎么使用 #region 呢。将东西用它来分组,它是非常有用的。在我写的类中或多或少有几个#region,用来对类中不同的结构进行分组。比如: fields, properties, methods, events, types等。如果你打开我写的类文件,你会看到结构如下:

public class SomeClass
{
[Events]

[Fields]

[Properties]

[Methods]
}

* 总的来说:*我将#region看成能控制阅读源代码的复杂度的一种方式。因为你可以将一些相关的代码放在一个区域(#region)里面。但是,这不是你随便就创建新方法或者新类的借口。其实Region并不能消除复杂度,它只是在你阅读代码的时候,隐藏了部分代码。你必须通过写出小巧,清晰,重点突出的方法和类,才能控制代码的复杂度。当你做到这些的时候,你甚至会发现#region是不必要的。

猜你喜欢

转载自blog.csdn.net/qq_29266497/article/details/80762037