私はvb.netに新しいですし、この言語の力を知らないこのVB.netコードを最適化することは可能ですか?より良い実装ができますか?
Public Sub createNextMonthSheets(ByRef io As InputOutput)
Dim WB As Excel.Workbook = getWorkBook(io.newClientReportHandle)
For Each name In clientSheetNames.FindAll(AddressOf findCurrMonthSheetNames)
For Each sheet In WB.Sheets
If (sheet.Name = name) Then
sheet.Name = name.Replace(currMonth, nextMonth)
sheet.Copy(After:=WB.Sheets(1))
End If
Next sheet
Next name
WB.Close()
End Sub
Private Function findCurrMonthSheetNames(ByVal sheetName As String) As Boolean
If sheetName.Contains(" (" + currMonth + ")") Then
Return True
Else
Return False
End If
End Function
..私はこのコードを最適化してください。
パフォーマンスを最適化できるかどうかを確認してください。
同じことを行うコードの行数を減らして最適化できるかどうかを確認してください。
これをより読みやすくするために、言語の新しい側面を紹介することができます。
findcurrmonthsheetnames関数を何らかの方法でオーバーロードして、WB.sheetsを取得できますか?
これはかなり簡単です。あなたのメソッド名にケーシングを固定し、 'WB'変数を小文字にする以外、コードは意味があり、すでにかなりコンパクトです。パフォーマンスに問題がある場合は、おそらく、ワークブックのサイズや複雑さ、またはこれがInteropコードの場合、Interopサービスのオーバヘッドが大きくなります。 –
linqを使用してより良い方法でdesieredシートを得ることができますか? –
LINQは魔法の解決 - すべての機能を提供しません。それはその用途を持っていますが、これはおそらく何らかの利益をもたらすものではありません。あなたが持っているものは単純で論理的です。 LINQを使用するためだけにLINQを使用するのは良いアプローチではありません。 –