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
Jur*_*uri 16
让我这样解释一下.如果您碰巧遇到了与上面显示的嵌套代码构造一样深的嵌套代码构造,那么问题可能不是格式化而是代码结构.
你应该考虑看一下:Martin Fowler的重构
通过提取方法,您不仅可以改善"浪费"的屏幕空间,还可以显着提高可读性;)
另一种解决方案始终是:在Visual Studio中Alt+ Shift+ Enter进入全屏模式
SwD*_*n81 10
工具>选项>文本编辑器>所有语言>选项卡>缩进大小> 1
不是一个很好的解决方案......:P
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; 你永远不知道什么会失败,你不应该试图捕捉你无法处理的异常.让他们冒泡,死得很厉害.