【问题标题】:Trying to break apart files to make code easier to read; any shortcuts to avoid excessive indentation?尝试拆分文件以使代码更易于阅读;任何避免过度缩进的捷径?
【发布时间】:2011-06-08 18:56:52
【问题描述】:

我正在做一个项目,我们在其他类中嵌套了一些复杂的类,并且已经到了将这些分成单独的文件可能有助于我们在混乱中维持某种秩序的地步。

但是,对于单个嵌套类,即使文件不包含其他内容(没有其他类),我仍然必须在每一行前加上三个缩进级别,这使得达到水平可读性的限制太容易了,即使是简单的语句(尽管有很多函数/类/变量名很长)。

文件可能如下所示:

namespace Example.Namespace1
{
    public partial class ImportantClass
    {
        protected partial class Nested1
        {
            // I can finally start writing code here
            public int AddOffset(int offset)
            {
                // Code inside of a method
            }

            public string ID{ get; protected set; }
        }
    }
}

那么,我是否有任何快捷方式来声明 Nested1 可以节省一些水平空间(例如 protected partial class ImportantClass.Nested1 不起作用,但类似的东西)?

【问题讨论】:

  • 你的意思是,除了不嵌套?
  • 您可以将所有内容放在一行上,应该可以。

标签: c# formatting indentation shorthand


【解决方案1】:

不要这样做。

仅对简单的内部使用类谨慎使用嵌套类。您尝试将它们拆分为不同文件的事实告诉您一些事情 - 即您对嵌套类有点过火了。

在代码之外公开使用它们是丑陋的丑陋。

如果您需要将内容保留在内部,请使用 internal 修饰符。命名空间和项目文件夹可以帮助您保持一切井井有条。

【讨论】:

  • 我的选择是将ImportantClass 命名空间与看起来不属于那里的新函数混为一谈,或者将它们包装在嵌套类中以至少给人一种分离感。我没有重新考虑命名空间的选项,因为这不是我的宠物项目。
  • 为什么不在 Example.Namespace1 命名空间下放置一个命名空间 - 即命名空间 Example.Namespace1.InternalStuff { class MyFormalyInternalClass {...
  • 还有一个问题 - 您是否打算在程序集之外使用这些类?如果它们是内部的,则仅将它们标记为内部的,它们不会成为程序集公共接口的一部分。
  • @palswim,ImportantClass 是“混乱”的,至少与 n 个方法的嵌套类一样多,就像它直接包含 n 个方法一样。
【解决方案2】:

听起来答案是

我们在这里有一些替代方法,但对于问题的答案:C# 是否有任何嵌套类的简写符号? 没有,它没有。

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-06
    • 2020-10-19
    • 2017-07-15
    相关资源
    最近更新 更多