C# 任何.NET'#地区指令';传统观念?
我非常欣赏在代码中定义区域的可能性,因为它极大地提高了可读性 无论如何,我希望每个人在所有类中使用相同的约定(所有区域的预定义顺序),如:C# 任何.NET'#地区指令';传统观念?,c#,.net,naming-conventions,region,regions,C#,.net,Naming Conventions,Region,Regions,我非常欣赏在代码中定义区域的可能性,因为它极大地提高了可读性 无论如何,我希望每个人在所有类中使用相同的约定(所有区域的预定义顺序),如: 私人领域 建设者 类属性 事件处理程序 等等 你有没有什么建议,这个划分是什么样子的(什么区域有意义,它们应该有什么名称)以及它们应该按什么顺序定义?有人曾经说过,有一个像上面这样的约定: 私人领域 建设者 类属性 事件处理程序 等等 就像摆一张桌子,所有的盘子放在一起,所有的勺子放在一起,所有的刀放在一起,所有的叉子放在一起 我对#region问题
- 私人领域
- 建设者
- 类属性
- 事件处理程序
- 等等
你有没有什么建议,这个划分是什么样子的(什么区域有意义,它们应该有什么名称)以及它们应该按什么顺序定义?有人曾经说过,有一个像上面这样的约定:
- 私人领域
- 建设者
- 类属性
- 事件处理程序
- 等等
我对
#region
问题的看法是将相关的方法、事件定义和属性放在一个区域中。然而,必须这样做会显示出代码的味道(要么你的类太大,要么做了太多的事情),但这是将其重构为更好的类的良好的第一步。我的习惯是不使用它们
如果你发现你的类变得太大,以至于你需要通过区域隐藏它的大部分,我建议你的类太复杂了,应该分开。你可能会对此感兴趣 我认为,只要你在整个项目中保持一致,你写它们的顺序就不重要了。还要非常小心过度使用它们(因此是初始链接!) 没有什么比找到只隐藏一行代码的封闭构造函数区域更糟糕的了
我想最终还是要看个人品味。正如我所说,一致性是关键 将它们视为另一种形式的注释:附加信息与代码混合在一起,没有对其执行正式检查。因此,它可能会随着代码的更新而过时 因此,切勿在注释或区域指令中重复代码中已说明的内容 只添加额外的信息 特别是,使用区域来重申某些成员是属性、事件等的事实是完全没有意义的。最常见的问题是为“私有方法”创建一个区域,然后编辑其中一个以将其公开。现在您必须移动它,这意味着在与旧版本的差异中,很难识别简单的更改
#region Lotsa boring code and lookup tables
我用它来保存屏幕不动产,没有别的:)每当我看到区域时,我认为代码要么生成了,要么需要重新分解
避免使用它们,当你觉得需要它们时,重新检查你在做什么,并尝试将你的类分成更小的类。最终,这将比使用区域更有助于提高应用程序的可读性。我为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>
#阶级地区
#类区域
类中#区域的代码段
.我个人不建议将代码区域作为代码约定的一部分。主要原因是区域隐藏代码,这可能导致以下问题:
- 开发人员可能会错过一些重要信息
部分源代码
- 平均数
同一文件中的LOC数量有增加的趋势
如果您对在团队中实施编码风格惯例感兴趣,请查看。请注意,该工具目前仅适用于C#。我使用以下区域:
Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events
原因是代码组织得更好。
我处理的文件可能有2000多行代码,如果没有区域,很难维护代码。我认为不需要区域。它们不清晰。
如果您需要(想想,您真的需要吗?)类中的一个数量代码,您可以使用“partial”类来拆分类逻辑单元。如果您要吃代码,这将非常有意义。是的,我希望代码很美味。但是。。。尽管我怀疑这种辩论中的隐喻,但我必须说,无论你引用谁的话,他们都有一个很好的观点!这里的问题显然是,您正在沿着无法自动执行或检查的任意边界排列代码。因此,你的安排只是表面的,事实上常常隐藏错误和真实的结构。请不要设置表格,而是构建代码。+1,好的,但是让我们假设我们有一个简单的WinForm,它的代码中有大约20个EventHandler。在这种情况下隐藏它们真的毫无意义吗?@PaN1C\u Showt1Me好吧,这就是分部类的用途。@PaN1C\u Showt1Me-是的。WinForm的代码中除了事件处理程序和对实际工作人员的方法调用之外,不应该有太多其他内容。那不应该太大。谢谢你说出显而易见的事实!局部的疼痛比痔疮稍微轻一点。好吧,我想在帖子上做出反应。。他们说设计好的代码不需要区域。无论如何。。如果您有5个重载构造函数,那么打开file.cs的任何人都会更容易看到1行“构造函数”而不是5个真正的构造函数吗?我认为您提到的案例肯定是证明其使用的一个好地方。我只是提防它们,因为我看到它们从一个有用的地方转移到另一个模糊代码的地方。问题是它们永远不会一致。为什么?因为没有办法强制执行给定的样式,而且您对#区域所做的所有约定从一开始就受到腐朽的影响。区域是一种仅由业余爱好者使用的工具,用于在没有其他选项的文件中分离代码代码>你把/