如何避免浪费屏幕空间编写稀疏的C#代码?

Dim*_* C. 24 c# formatting indentation

格式化C#代码的普遍接受的方式似乎如下:

namespace SomeNamespace
{
    namespace SomeSubNamespace
    {
        class SomeClass
        {
            void SomeFunction()
            {
                using (var someFile = new StreamWriter(somePath))
                {
                    try
                    {
                        lock(someCriticalSection)
                        {
                            using (var someDisposableThing1 = new DisposableThing())
                            {
                                DoSomething();                            
                                using (var someDisposableThing2 = new DisposableThing())
                                {
                                    lock(someOtherCriticalSection)
                                    {
                                        DoSomethingMore();
                                    }
                                }
                            }
                        }
                    }
                    catch(Exception e)
                    {
                        Log(e);
                    }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这会浪费大量的水平和垂直屏幕空间.我肯定不是第一个注意到的人.我的问题是:你是否与它一起生活,或者你是否开发了不同的格式化风格以避免过多的空白区域?

PS:请注意,我甚至没有使用单个if语句!

Bla*_*rad 19

  1. 我不经常看到以这种方式嵌套的命名空间 - 可能它发生了,而不是我工作的地方
  2. 我和它一起生活.而且大多数都不写这种深层嵌套的代码.使用较短的方法或具有较少嵌套的方法肯定会减少水平空白问题,并且将方法分解为较小的部分意味着您可以在给定数量的垂直空间中获得更重要的信息.

  • 同意.我不认为我曾经见过像这样嵌套的命名空间. (4认同)
  • 我从来没有见过有人像这样嵌套命名空间,唯一的原因是它而不是命名空间SomeNamespace.SomeSubNamespace会在每个命名空间中添加一个类,在这种情况下你在一个文件中有两个类,这是一个no-no,特别是如果两个类都在不同的命名空间中 - 那么它们的文件应该在不同的文件夹中. (2认同)

Jur*_*uri 16

让我这样解释一下.如果您碰巧遇到了与上面显示的嵌套代码构造一样深的嵌套代码构造,那么问题可能不是格式化而是代码结构.

你应该考虑看一下:Martin Fowler的重构

通过提取方法,您不仅可以改善"浪费"的屏幕空间,还可以显着提高可读性;)

另一种解决方案始终是:在Visual Studio中Alt+ Shift+ Enter进入全屏模式


chr*_*166 10

好吧,我买了一台高清显示器;)

但除了使用更少的缩进之外,处理它的唯一方法是将一些代码移动到他们自己的方法中.


SwD*_*n81 10

工具>选项>文本编辑器>所有语言>选项卡>缩进大小> 1
不是一个很好的解决方案......:P

  • 我工作的一个人改变了他的标签......为他工作 (3认同)
  • 就我个人而言,我发现任何少于 4 个空格的缩进都太小,无法轻松看到缩进级别。(就在昨天,我们正在查看一个带有 2 个空格制表符的 XML 文件 - 哎呀!)。确保团队中的每个人都同意这一点,或者每个人都使用制表符缩进,就像马丁建议的那样。 (2认同)

Geo*_*ker 10

你应该阅读Bob Martin的清洁代码.它有助于解决这个问题.在这种情况下,SomeFunction()不止一件事.在它自己的方法中拆分它做的每件事.

 namespace SomeNamespace.SomeSubNamespace
 {
    class SomeClass
    {
        void WriteToFile()
        {
            using (var someFile = new StreamWriter(somePath))
            {
                lock(someCriticalSection)
                {
                   ExecuteCriticalSection();
                }
            }
        }
        void ExecuteCriticalSection()
        {
            using (var someDisposableThing1 = new DisposableThing())
            {
            DoSomething();
            ExecuteFinalCriticalSection();
            }   
        }

        void ExecuteFinalCriticalSection()
        {
            using (var someDisposableThing2 = new DisposableThing())
            {
            lock(someOtherCriticalSection)
                {
                DoSomethingMore();
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,不要抓住System.Exception; 你永远不知道什么会失败,你不应该试图捕捉你无法处理的异常.让他们冒泡,死得很厉害.

  • 为System.Exception +1,我必须一直辩论. (9认同)

Grz*_*nio 7

我倾向于编写小类,简短的嵌套方法.您不仅可以在屏幕上看到所有内容,而且代码更好!


Dav*_*sky 5

我有一台24英寸宽屏显示器.我非常喜欢"漂亮打印"而不是回收空间.压缩,挤压在一起的代码很难阅读并伤害我的大脑.