在C#中编写代码段分隔符的更优雅的方法是什么?

时间:2014-02-21 17:18:13

标签: c# coding-style

在C#中,当我有不同的代码段,如常量,API函数,辅助函数等时,我想将它们分开。我通常使用这样的东西:

public class Foo {

      //================== Constants ==================
      private const string VIP = "Cob H.";
      private const int IMPORTANT_NUMBER = 23; 

      //================== API Functions ==================
      [WebMethod(MessageName = "SomeInformation")]
      public string SomeInformation() {
            return VIP + " is dead.";
      }

      //================== Inner Classes ==================
      private class IrrelevantClass {
            public string Name { get; set; }
            public string City { get; set; }
      }
}

有没有一种优雅的方式来分割它们而不是使用一堆丑陋的评论?与Objective-C类似,您可以使用

#pragma mark - Inner Classes

我查看了C#pragma list中的所有关键字,但没有一个看起来很有希望。

4 个答案:

答案 0 :(得分:11)

C#具有regions,它具有类似的功能。要使用区域,您的代码看起来会像这样:

public class Foo {

      #region Constants
      private const string VIP = "Cob H.";
      private const int IMPORTANT_NUMBER = 23; 
      #endregion

      #region API Functions
      [WebMethod(MessageName = "SomeInformation")]
      public string SomeInformation() {
            return VIP + " is dead.";
      }
      #endregion

      #region Inner Classes 
      private class IrrelevantClass {
            public string Name { get; set; }
            public string City { get; set; }
      }
      #endregion
}

如果您使用的是Visual Studio,C#编辑器可让您折叠区域,从而更轻松地浏览大型源文件。

答案 1 :(得分:6)

您可以使用#regions.

  

#region允许您指定在使用Visual Studio代码的大纲功能时可以展开或折叠的代码块   编辑器。

public class Foo
{

    #region Constants
    private const string VIP = "Cob H.";
    private const int IMPORTANT_NUMBER = 23;
    #endregion

    //......rest of the code

}

答案 2 :(得分:3)

你可以使用#regions但是它有一些与之相关的缺点,就像人们倾向于隐藏它下面的脏代码或隐藏一些长眼哭泣的方法。

我对你的方法也很好,但基本上写一个代码,你不需要隐藏在区域之下。

如果你让它可读,那么根本不需要分隔符......

答案 3 :(得分:1)

我尝试使用#region,但我不喜欢使用Ctrl + M,O(折叠到定义热键)会折叠区域,以至于我无法轻易看到每个区域中的哪些功能/成员。我尝试使用块注释,但那些也会崩溃。

我提出了自己的高可见度,多行分隔符,在使用“折叠到定义”时不会崩溃。也许其他人会发现这个想法很有用:

enter image description here