我应该以什么顺序在C#类中放置属性,事件,函数,函数覆盖等?

时间:2009-10-21 12:42:17

标签: c# readability

在创建新的C#类时,我不确定声明属性,事件委托,函数,函数覆盖等的最佳逻辑顺序是什么,以及在决定该顺序时应该考虑哪些因素。

通常在创建WebUserControl类后面的代码时,我最终按此顺序放置内容:

  1. 活动
  2. 属性
  3. 生命周期事件覆盖功能
  4. 其他功能
  5. 在决定如何在类文件中订购类的这些元素时,是否有更合理的方法来执行此操作以及我应该考虑哪些因素?

8 个答案:

答案 0 :(得分:7)

对编译没有任何影响,您可能希望将这些部分包装在#region中,以便让阅读代码的人更容易知道它们的位置并保持它们的有序性。它可能应该是贵公司的编码标准,因此所有代码的组织方式都相似,而且看起来不那么令人沮丧......

答案 1 :(得分:4)

这是一种风格偏好。很多人都这样做:

  1. 属性
  2. 覆盖
  3. 其他功能
  4. 活动
  5. 有些人还使用#regions分隔每个人。

答案 2 :(得分:4)

无论StyleCop告诉我什么。 :)

答案 3 :(得分:3)

只要对你有意义,或符合你的编码标准。只要它是一致的,它并不重要......

答案 4 :(得分:3)

只要您的风格与您的风格一致,我认为订单并不重要。考虑使用区域,但不要过度使用它们。作为一般的经验法则,我避免使用所有嵌套区域。这只是隐藏太多代码。

答案 5 :(得分:3)

作为特定订单,一致性更重要。

就个人而言,我喜欢通过可见性快速找到成员:

  • 公共
  • 保护
  • 私有

作为该类的用户,您通常只需要公共接口,如果您派生,您还需要受保护的接口,只有在您更改类本身时才需要查看私有内容。

答案 6 :(得分:3)

只要您在整个开发团队中拥有标准样式,它就适用于您。如果您使用的是Visual Studio,那么使用类查看器和成员下拉菜单,它就变得更加无关紧要了。查看Regionerate插件 - 它为您提供了按类型或按字母顺序对成员进行排序的选项,还可以按类型,可见性等添加区域。如果不是默认设置适合您,您可以定义自己的。

答案 7 :(得分:2)

我通常将成员声明放在顶部,然后是方法(生命周期和其他),然后是事件处理程序,最后是属性。对于方法,我尝试按照它们被调用的顺序粗略地对它们进行排序。例如。首先加载页面时调用的方法,然后是保存页面提交时调用的方法。属性和事件处理程序最终是因为它们通常是微不足道的,所以我把它们放在一边。