Pat*_*ski 5 vb.net visual-studio-2010
我在这里做了一点搜索,我很惊讶没有人问过这个问题.对于多行语句,Visual Studio 2010的VB智能缩进是否会被严重破坏?或者我正在做/设置错误的东西?我把它设置为4个字符的缩进与保持标签.在VB中使用自然返回键入多行语句会产生以下内容(更改属性名称以保护无辜者).
Public Sub Sub1()
Dim foo As New MyClassA With {.FileName = "test",
.Format = MyEnumForImageFormat.jpg,
.IsReallySpecial = False,
.Name = "testN",
.SourceId = Guid.NewGuid(),
.VariantName = "TestV",
.Width = 800,
.Height = 600}
End Sub
Run Code Online (Sandbox Code Playgroud)
怎么会有人想这样格式化他们的代码?我想,也许我需要重新格式化(Ctrl + K Ctrl + D):
Public Sub Sub1()
Dim foo As New ImageBase With {.FileName = "test",
.Format = MyEnumForImageFormat.jpg,
.IsReallySpecial = False,
.Name = "testN",
.SourceId = Guid.NewGuid(),
.VariantName = "TestV",
.Width = 800,
.Height = 600}
End Sub
Run Code Online (Sandbox Code Playgroud)
为了更好的衡量,我再次尝试重新格式化.瞧,它把它推得更远了.我再次推了它,它又动了一些.最后,经过四次重新格式化后,我的代码如下:
Public Sub Sub1()
Dim foo As New ImageBase With {.FileName = "test",
.Format = MyEnumForImageFormat.jpg,
.IsReallySpecial = False,
.Name = "testN",
.SourceId = Guid.NewGuid(),
.VariantName = "TestV",
.Width = 800,
.Height = 600}
End Sub
Run Code Online (Sandbox Code Playgroud)
更好,但我们真的希望连续的线条只缩进一个空格吗?为什么我必须重新格式化四次以获得我想要的东西?最重要的是,尝试在上面添加一个属性定义并不保持任何对齐 - 默认缩进是通过随机确定的空格和制表符数量向右级联偏移.
使用旧式的延续字符没有帮助.我怎样才能有任何理智的智能缩进?
根据您选择拆分线的确切位置,您会发现自动缩进更好或更差.在你的例子中,我的风格是将开括号和第一个项目带到下一行,之后缩进将表现得更好.
Public Sub Sub1()
Dim foo As New MyClassA With
{.FileName = "test",
.Format = MyEnumForImageFormat.jpg,
.IsReallySpecial = False,
.Name = "testN",
.SourceId = Guid.NewGuid(),
.VariantName = "TestV",
.Width = 800,
.Height = 600}
End Sub
Run Code Online (Sandbox Code Playgroud)
不想假设太多,我相信多行语句中每行的缩进由前一行控制.然而,通过这种风格选择,您会发现使用自然回归添加项目以正确定位自己.将任何粘贴片段复制到不同缩进级别的目标时,这仍然会导致缩进问题,但由于返回的位置正确,我手动重置每一行并没有太多问题(重复Down,End,Delete,输入.)
类似的解决方案对于多行lambda函数很有用,但是这些函数比直线多行语句更好.正确定位开启调用会自动纠正整个例程的缩进.
这不是很好,缩进浮动:
Public Sub Sub1()
Dim a As New Action(Sub()
Dim b As Double = 4.0
Dim c As Double = 5.0
Dim d As Double = b * c
End Sub)
End Sub
Run Code Online (Sandbox Code Playgroud)
这与压头的表现很好:
Public Sub Sub1()
Dim a As New Action(
Sub()
Dim b As Double = 4.0
Dim c As Double = 5.0
Dim d As Double = b * c
End Sub)
End Sub
Run Code Online (Sandbox Code Playgroud)
正如个人风格我更喜欢这些,其他人可能会得到相同的结果与不同的外观.
| 归档时间: |
|
| 查看次数: |
5048 次 |
| 最近记录: |