分類:[.NET 全般]
2020/07/17(Fri) 01:21:10 編集(投稿者)
お世話になっております。
匿名関数の使用方法について
以下プログラムをレビュー頂きたく投稿致しました。
匿名関数を使用することにより、
通常の関数定義をした関数を使用する場合と比べ、
コード量の削減は実現できましたが、反面、可読性が落ちたように感じております。
当方は匿名関数を使用したコードを読み書きする機会が今回が初めてで、
可読性が落ちたと感じる原因が、経験や知識の不足によるものか、
またはそもそも使い方が不自然なためなのか意見を募らせて頂きたいです。
どうかよろしくお願い致します。
Class Sample
private deligate function MethodSample() as string
public function main() as ArrayList
dim ret as new ArrayList
dim param as string = "あ"
ret.add(sampleSubA(param, Function(param as string) sampleSubC(param, "い")))
ret.add(sampleSubA(param, Function(param as string) sampleSubC(param, "お")))
main = ret
' 結果
' main(0) ⇒ あいうえ
' main(1) ⇒ あおうえ
'
'
end sub
'
' 処理フレームA
'
' 仕様上、定型処理Aは変更が入らない想定の処理です
' 処理A-1で引数から受け取った関数を実行します
' 処理A-2では処理A-1で加工した結果をさらに加工します。
' 処理A-2は変更が入らない想定の処理です
'
private function sampleSubA(param as string, methodSample as MethodSample) as string
'
' 改修が入る可能性が非常に低い定型処理A(開始処理)
'
・・・
'
'処理A-1
'
dim paramA as string
dim str as string
str = sampleSubB(param, methodSample(param))
'
'処理A-2
'
sampleSubA = sampleSubB(str, Function(param as string) param & "え")
'
' 改修が入る可能性が非常に低い定型処理A(終了処理)
'
・・・
end function
'
' 処理フレームB
'
' 仕様上、定型処理Bは変更が入らない想定の処理です
' 処理Bで引数から受け取った関数を実行します
'
private function sampleSubB(param as string, methodSample as MethodSample) as string
'
' 改修が入る可能性が非常に低い定型処理B(開始処理)
'
・・・
'
'処理B
'
sampleSubB = methodSample(param)
'
' 改修が入る可能性が非常に低い定型処理B(終了処理)
'
・・・
end function
'
' 処理C
'
private function sampleSubC(param1 as string, param2 as string) as string
sampleSubC = param1 & param2 & "う"
end function
end class