VB.NET:能否将函数分成几个部分?

3

有没有可能将一个函数分成几个部分,就像这样?

Function myFunc

  Section
    Dim i As Integer = 0
    ...
  End Section

  Section
    Dim i As Integer = 0
    ...
  End Section

End Function

我知道这可以通过

If True Then
  Dim i As Integer = 0
  ...
End If

但这似乎是一种hack的方法

我是不是走了错误的路线?

2个回答

4

看起来你需要将你的函数分解成更多的函数。

如果一个函数做太多事情,它会很难维护。你的函数和方法应该只做一项任务或一个特定的功能。如果超过这个范围,你应该将其拆分成多个函数。

尝试为函数想出一个具体的名称,例如CreateDatabaseConnection。如果你有一个像CreateDatabaseConnectionAndSelectContacts这样带有“and”字眼的名称,那么它可能需要重构。


3
我建议将您的“Sections”重构为单独的函数或子程序,并根据需要调用它们。您希望这些内容分开似乎突显了重构的机会...

你认为这是在每种类似情况下最佳的做法吗? - ic3b3rg
@ic3b3rg:我不知道Reed在说什么,但我会说“绝对没错”!如果你想知道为什么,可以读一下Robert Martin的书《Clean Code》(http://jesseliberty.com/reviews/book-review-clean-code-by-uncle-bob-martin/)。 - Doc Brown
@ic3b3rg:很可能是的。一般来说,如果你可以将函数分解成更小的函数,那么你应该这样做。这使得它们更易于维护和测试。它还有助于函数更紧密地遵循SRP(单一职责原则)(参见:http://en.wikipedia.org/wiki/Single_responsibility_principle)。 - Reed Copsey
我应该将我的函数改成一个类吗?这样我就可以将它和所有子函数封装到一个类中了? - ic3b3rg
1
如果你的函数可以作为一个类,那么是的。如果这个函数依赖于类中的其他数据,并且在它所在的类中“逻辑上”是一个操作,我会保持不变,只是将其拆分。(你提问的事实表明“是的”,但是没有更多的信息很难知道什么是最好的...) - Reed Copsey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接