谁喜欢Visual Studio中的#regions?

时间:2011-01-01 14:32:20

标签: visual-studio coding-style region

就我个人而言,我无法忍受区域标签,但显然它们对于组织代码具有广泛的吸引力,所以我想测试其他MS开发人员对这个想法的水温。

我个人的感觉是,任何简化代码的愚蠢技巧都只会鼓励可怕的编码行为,例如缺乏凝聚力,意图不明确以及编码标准差或不完整。

一位程序员告诉我,代码区域通过明确另一个程序员应该放置他或她的贡献来帮助鼓励编码标准。

但是,坦率地说,这对我来说听起来像是一堆马粪。如果你有一个标准,程序员的工作就是了解那个标准是什么......你不需要在每个单独的类文件中定义它。

而且,打开文件时,没有什么比让所有代码都崩溃更令人讨厌的了。我知道cntrl + M,L会打开所有内容,但是你有一个可怕的“哈希区域定义”打开和关闭行来阅读。

他们只是在烦恼。

我最快速的编码理念是所有程序员都应该努力创建清晰,简洁和有凝聚力的代码。区域标签只会产生噪音和冗余意图。

地区标签在经过深思熟虑和有意思的课程中没有实际意义。

他们似乎对我有用的唯一地方是自动生成的代码,因为除了个人好奇之外,你永远不必阅读它。

6 个答案:

答案 0 :(得分:6)

StyleCop doesn't like regions

  

SA1124:DoNotUseRegions

     

<强>原因

     

C#代码包含一个区域。

     

规则说明

     

只要将某个区域放置在代码中的任何位置,就会违反此规则。在许多编辑器(包括Visual Studio)中,默认情况下该区域将显示为折叠状态,将代码隐藏在该区域内。隐藏代码通常是一种不好的做法,因为这会导致错误的决策,因为代码会随着时间的推移而得到维护。

     

如何修复违规行为

     

要修复违反此规则的行为,请从代码中删除该区域。

关于这是否是一个合理的规则,有some discussion

共识似乎是某些人喜欢地区而有些人不喜欢 - 这取决于个别团队的决定。最重要的是在整个项目中使用一致的样式。

可以接受区域的一个地方是对实现特定接口的所有方法进行分组。值得注意的是,如果使用代码生成功能为实现接口提供方法存根,Visual Studio会自动添加区域。

  

他们似乎对我有用的唯一地方是自动生成的代码,因为除了个人好奇之外,你永远不必阅读它。

partial class feature更适合将自动生成的代码与同一类中手动生成的代码分开。

  

使用自动生成的源时,可以将代码添加到类中,而无需重新创建源文件。 Visual Studio在创建Windows窗体,Web服务包装器代码等时使用此方法。您可以创建使用这些类的代码,而无需修改Visual Studio创建的文件。

答案 1 :(得分:6)

我喜欢地区,并且一直使用它们。我用它们在课堂内对同类成员进行分组。

您已经可以在编辑器中折叠方法,类和命名空间。区域为您提供了创建另一个级别的选项,使您可以按照您认为重要的方式排列代码。

答案 2 :(得分:3)

我认为#region完全没问题。我自己从未使用它,但如果你有一个大型或复杂的课程,它可以帮助你找到你想要的东西。想象一下,如果你正在实现ID3D10Device1-这是超过一百种方法要实现的。你想把它们全部放在一个地方?

答案 3 :(得分:2)

我确实使用区域来组织一个类中更大的构造,即。一个具有回调和方法的依赖属性,例如。如果您的DP需要IEnumerable<T>,并且您希望使用弱事件模式来响应INotifyCollectionChanged。这可能需要一些代码,因为我在编码后不会触摸它,我把它放在一个区域。

但是,如果您使用区域来构建逻辑,这就是严重的代码嗅觉,这就是Mark的帖子中的StyleCop规则指向帽子。

答案 4 :(得分:1)

在我编程时,我使用了很多区域,它们帮助我保持我的代码组织,并且能够只关注我关心的部分。我总是在这些地区添加评论以及它们的内容。但是当我完成时,我总是将它们删除。它是一个方便的工具,就是这样。

答案 5 :(得分:-1)

IHMO,如果您在课程中有#region部分,则表示您的课程中有两个行为,因此您应该将课程拆分为两个对象。