c# - 你会在长开关/枚举声明中使用区域吗?

标签 c# enums switch-statement regions

我最近发现自己需要(是的,需要)在 C# 代码中定义长得离谱的 switch 语句和 enum 声明,但我想知道人们的感受是将它们分成逻辑小节的最佳方式。在我的情况下,枚举值和案例(基于枚举值)都有相当清晰的分组,但我有点不确定如何在代码中反射(reflect)这一点。

请注意,在我的代码中,我有大约 5 组,每组 10 到 30 个枚举值/案例。

我可以设想的三个隐约合理的选择是:

  1. 定义 #region block 围绕声明中所有逻辑组的 case/enum 值(可选地用空行分隔)。
  2. 用它的名字注释每个组,在每个组名注释前有一个空行。
  3. 什么都不做 - 只需将开关/枚举保留为一个巨大的案例/值列表。

你更喜欢哪个?你会分开对待枚举和开关吗?(这对我来说似乎有点奇怪。)现在,我不会说这个问题有任何正确/错误的答案,尽管我仍然很想听听什么是普遍的共识。

注意 1: 不幸的是,这种情况我可能有一个非常长的 50/100+ 值的枚举声明是不可避免的(并且与 switch 类似),因为我正在尝试编写一个词法分析器(tokeniser),因此,出于多种原因,这似乎是最合理的方法。

注意 2: 我完全知道关于是否在通用代码中使用区域(主要用于构造类)的问题已经存在几个重复的问题,但我觉得我的问题很多更具体,尚未解决。

最佳答案

当然,将这些东西区域化。它们可能不会发生太大变化,当发生变化时,您可以展开该区域、进行更改、折叠它,然后继续处理文件的其余部分。

它们存在是有原因的,利用它们对您有利。

关于c# - 你会在长开关/枚举声明中使用区域吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1050638/

相关文章:

c# - 使用三中位数的排序算法?

c++ - 自定义类到枚举类的隐式转换

ios - swift 枚举 : perform code on value change?

matlab - MATLAB 中的浮点枚举

haskell - case()中下划线的含义

java - switch 语句不切换

php - 我可以在开关盒中使用 strpos 吗?

c# - 简单的 NUnit 测试失败,因为未抛出异常(抛出测试之外的异常)

c# - .NET Framework 在更改特定属性之前是否执行内部检查?

c# - 动画受面板限制