【问题标题】:More elegant way to write code section dividers in C#?在 C# 中编写代码部分分隔符的更优雅的方式?
【发布时间】:2023-03-31 21:14:01
【问题描述】:

在 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; }
      }
}

有没有一种优雅的方式来划分它们而不是使用一堆丑陋的 cmets?就像在 Objective-C 中你可以使用

#pragma mark - Inner Classes

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

【问题讨论】:

  • #region Constants .... #endregion ?
  • 哇,你们在这里回答问题的速度让我非常惊讶,当我在 5 分钟后回来看到所有答案和投票时,我有一种我已经睡着的错觉问完问题一晚上就醒了。

标签: c# coding-style


【解决方案1】:

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# 编辑器允许您折叠区域,从而更轻松地浏览大型源文件。

【讨论】:

  • 我唯一要补充的是,您应该将区域名称放在#endregion 指令上(即#endregion 常量)。这样,如果该区域有点长并且您位于底部,您就知道自己在哪里。
【解决方案2】:

你可以使用#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

}

【讨论】:

    【解决方案3】:

    你可以使用#regions,但它也有一些缺点,比如人们倾向于在它下面隐藏脏代码或隐藏一些长眼睛哭泣的方法。

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

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

    【讨论】:

    • 我非常不同意你最后的评论。区域不是(也不应该)与可读性有关,而是与组织代码和处理您感兴趣的区域有关,同时不显示文件的其余部分。
    【解决方案4】:

    我尝试使用#region,但我不喜欢使用 Ctrl + M、O(折叠到定义热键)如何折叠区域,因此我无法轻松查看每个函数/成员中的哪些函数/成员。我尝试使用块 cmets,但它们也会崩溃。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 2017-03-31
      • 2018-04-01
      • 1970-01-01
      相关资源
      最近更新 更多