思い出した!

以前書いたTry...Catch...Finally ステートメント使用時の Exit 。で、


Dim shouldReturn As Boolean = False
って書いてた。'shouldReturn' ってどっかで見たことあるなーっておもっていたけど思い出したのでメモ。
私は、Refactor!™ for Visual Basic® .NET 2005 なるものを使用しています。リファクタリングなんてまだまだ勉強中なわけですが、これはふつーに便利ツールです。
それの機能のひとつに「メソッドの展開」ってのがあって、だらだらと長ったらしいメソッド書いといて、その内部を分離するために使っています。
で、今回の話の内容は、

[Visual Basic]

Public Sub Greet(ByVal message As String)

If String.IsNullOrEmpty(message) Then

Exit Sub

End If

System.Console.WriteLine(message)

End Sub

って感じのコードから
[Visual Basic]

If String.IsNullOrEmpty(message) Then

Exit Sub

End If

この部分に「メソッドの展開」を指定すると、
[Visual Basic]

Public Sub Greet(ByVal message As String)

Dim lShouldReturn As Boolean
GreetExtracted(message, lShouldReturn)
If lShouldReturn Then
Return
End If

System.Console.WriteLine(message)

End Sub



Private Sub GreetExtracted(ByVal message As String, ByRef shouldReturn As Boolean)
shouldReturn = False
If String.IsNullOrEmpty(message) Then

shouldReturn = True : Exit Sub

End If
End Sub

と、こんな感じになるんですが、ここでの 'shouldReturn' のを無意識に真似ていたっぽい。
でもこれ、
  • lShouldReturn ってなんかヤダ。
  • True : Exit Sub ってなんかヤダ。
  • Exit Sub じゃなくて Return ってなんかヤダ。
  • ByRef ってなんかヤダ。
  • 微妙なスペース行 ってなんかヤダ。
実にだだっこぶりを発揮できるコードです。orz