Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 任何.NET'#地区指令';传统观念?_C#_.net_Naming Conventions_Region_Regions - Fatal编程技术网

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个真正的构造函数吗?我认为您提到的案例肯定是证明其使用的一个好地方。我只是提防它们,因为我看到它们从一个有用的地方转移到另一个模糊代码的地方。问题是它们永远不会一致。为什么?因为没有办法强制执行给定的样式,而且您对#区域所做的所有约定从一开始就受到腐朽的影响。区域是一种仅由业余爱好者使用的工具,用于在没有其他选项的文件中分离代码你把
/