我非常感谢您可以在代码中定义区域,因为它可以疯狂地提高可读性。
无论如何,我想让所有人在所有类别中使用相同的约定(使用所有区域的预定义顺序),如:
你有什么命题可以看出这个区域是什么样的(哪些区域有意义,哪些区域应该有它们)以及它们应该以何种顺序定义?
答案 0 :(得分:37)
我的约定不是使用它们。
如果你发现你的班级太大,你需要通过地区隐藏它的大部分,我建议你的班级太复杂,应该分开。
答案 1 :(得分:11)
有人曾经说过像上面那样的公约:
- 私人领域
- 构造
- 类属性
- 事件处理程序
- 等...
就像设置一张桌子,所有的盘子在一起,所有的勺子在一起,所有的刀子都在一起,所有的叉子都在一起。
我对#region
问题的看法是将相关方法,事件定义和属性放在一个区域中。然而,完全不必这样做会表明代码气味(你的课程太大或太多东西)但这是将它重构为更好的课程的良好的第一步。
答案 2 :(得分:6)
每当我看到区域时,我认为代码是生成的或需要重新分解。
避免使用它们,当你觉得需要它们时,重新检查你正在做的事情并尝试将你的课程分成较小的课程。最终,这将有助于提高应用程序的可读性,而不是使用区域。
答案 3 :(得分:6)
我个人不建议将代码区域作为代码约定的一部分。主要原因是地区隐藏代码,这可能会导致以下问题:
如果您有兴趣在团队中执行编码风格约定,请查看Microsoft StyleCop。请注意,该工具目前仅适用于C#。
答案 4 :(得分:3)
#region Lotsa boring code and lookup tables
我用它来节省屏幕空间,没有别的:)
答案 5 :(得分:3)
我使用以下区域:
Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events
原因在于更好地组织代码 我使用可能有超过2000行代码的文件,并且很难在没有区域的情况下维护代码。
答案 6 :(得分:3)
我认为地区没有必要。它们不清晰。 如果你需要(想想,你真的需要?)你班级的金额代码,你可以使用'partial'类来分割类逻辑单元。
答案 7 :(得分:2)
将它们视为另一种形式的评论:与您的代码混合的其他信息,其中未对其执行正式检查。因此,它可能会随着代码而过时。
所以不要在代码中已经说明的注释或区域指令中复制。
仅添加额外信息。
特别是,使用区域来重申某些成员是属性,事件等这一事实是完全没有意义的。最常见的问题是您为“私有方法”创建了一个区域,然后编辑其中一个区域以使其公开。现在你必须移动它,这意味着在旧版本的差异中,简单的更改很难辨别。
答案 8 :(得分:1)
您可能对此 do you say no to c# regions 感兴趣。
我认为,只要你在整个项目中保持一致,你编写它们的顺序并不重要。也要非常警惕过度使用它们(因此最初的链接!)。
没有什么比找到一个只隐藏一行代码的封闭构造函数区域更糟糕了。
我认为最终归结为个人品味。正如我所说,一致性是关键!
答案 9 :(得分:1)
我为VS 2008编写了自己的区域代码片段,我总是使用它:
<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>#class region</Title>
<Shortcut>#classregion</Shortcut>
<Description>Code snippet for #region in classes</Description>
<Author>Simon Linder</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>name</ID>
<ToolTip>Region name</ToolTip>
<Default>MyRegion</Default>
</Literal>
</Declarations>
<Code Language="csharp">
<![CDATA[#region Variables
$selected$ $end$
#endregion
#region Construction/Destruction
$selected$ $end$
#endregion
#region Properties
$selected$ $end$
#endregion
#region Public Methods
$selected$ $end$
#endregion
#region Private/Proteced Methods
$selected$ $end$
#endregion]]>
</Code>
</Snippet>
</CodeSnippet>
正如您所看到的,我确实使用了Variables
,Construction/Destruction
,Properties
,Public
和Private
方法的区域。我经常将另一个子区域添加到名为events
的私有区域中。区域的顺序也适用于StyleCop。