需要为重复的代码创建一个函数

时间:2016-03-31 13:33:22

标签: vb.net function visual-studio-2015 repeat

我的代码中有以下功能。

  Private Function MedTuboFuncPCT() As List(Of Decimal)
    Dim a, Div, MedTubo1, DivExa, Div1, Div2, Div3, Div4, Div5 As Decimal
    Dim b, MedTubo2, Div11, Div22, Div33, Div44, Div55 As Decimal
    a = Me.Controls("MeasurePCT" & ContadorGlobal).Text
    Div = 2
    If a > 6029 Then
        Te180 = Te180 + 1
        b = (a + 21) / 2
        Div = Div + 1
        If b / Div <= LimiteGlobalSeparador Then
            DivExa = b / Div
            Div1 = DivExa - 19
            Div2 = DivExa
            Div3 = DivExa - 30.5
            MedTubo1 = Div1 + Div2 + Div3
            Div11 = DivExa - 30.5
            Div22 = DivExa
            Div33 = DivExa - 31
            MedTubo2 = Div11 + Div22 + Div33
        Else
            Div = Div + 1
            If b / Div <= LimiteGlobalSeparador Then
                DivExa = b / Div
                Div1 = DivExa - 19
                Div2 = DivExa
                Div3 = DivExa
                Div4 = DivExa - 30.5
                MedTubo1 = Div1 + Div2 + Div3 + Div4
                Div11 = DivExa - 30.5
                Div22 = DivExa
                Div33 = DivExa
                Div44 = DivExa - 31
                MedTubo2 = Div11 + Div22 + Div33 + Div44
            Else
                Div = Div + 1
                If b / Div <= LimiteGlobalSeparador Then
                    DivExa = b / Div
                    Div1 = DivExa - 19
                    Div2 = DivExa
                    Div3 = DivExa
                    Div4 = DivExa
                    Div5 = DivExa - 30.5
                    MedTubo1 = Div1 + Div2 + Div3 + Div4 + Div5
                    Div11 = DivExa - 30.5
                    Div22 = DivExa
                    Div33 = DivExa
                    Div44 = DivExa
                    Div55 = DivExa - 31
                    MedTubo2 = Div11 + Div22 + Div33 + Div44 + Div55
                End If
            End If
        End If
    Else
        If a <= LimiteGlobalSeparador Then
            MedTubo1 = a - 29
        Else
            If a / Div <= LimiteGlobalSeparador Then
                DivExa = (a + 21) / Div
                Div1 = DivExa - 19
                Div2 = DivExa - 31
                MedTubo1 = Div1 + Div2
            Else
                Div = Div + 1
                If a / Div <= LimiteGlobalSeparador Then
                    DivExa = (a + 21) / Div
                    Div1 = DivExa - 19
                    Div2 = DivExa
                    Div3 = DivExa - 31
                    MedTubo1 = Div1 + Div2 + Div3
                Else
                    Div = Div + 1
                    If a / Div <= LimiteGlobalSeparador Then
                        DivExa = (a + 21) / Div
                        Div1 = DivExa - 19
                        Div2 = DivExa
                        Div3 = DivExa
                        Div4 = DivExa - 31
                        MedTubo1 = Div1 + Div2 + Div3 + Div4
                    Else
                        Div = Div + 1
                        If a / Div <= LimiteGlobalSeparador Then
                            DivExa = (a + 21) / Div
                            Div1 = DivExa - 19
                            Div2 = DivExa
                            Div3 = DivExa
                            Div4 = DivExa
                            Div5 = DivExa - 31
                            MedTubo1 = Div1 + Div2 + Div3 + Div4 + Div5
                        End If
                    End If
                End If
            End If
        End If
    End If
    Dim iList As New List(Of Decimal)
    iList.Add(MedTubo1)
    iList.Add(Div1)
    iList.Add(Div2)
    iList.Add(Div3)
    iList.Add(Div4)
    iList.Add(Div5)
    If a > 6029 Then
        iList.Add(MedTubo2)
        iList.Add(Div11)
        iList.Add(Div22)
        iList.Add(Div33)
        iList.Add(Div44)
        iList.Add(Div55)
    End If
    If Div3 = 0 Then
        SoporteTT90 = SoporteTT90 + 1
    Else
        If Div4 = 0 Then
            SoporteTT90 = SoporteTT90 + 2
        Else
            If Div5 = 0 Then
                SoporteTT90 = SoporteTT90 + 3
            Else
                SoporteTT90 = SoporteTT90 + 4
            End If
        End If
    End If
    If Div33 = 0 Then
        SoporteTT90 = SoporteTT90 + 1
    Else
        If Div44 = 0 Then
            SoporteTT90 = SoporteTT90 + 2
        Else
            If Div55 = 0 Then
                SoporteTT90 = SoporteTT90 + 3
            Else
                SoporteTT90 = SoporteTT90 + 4
            End If
        End If
    End If
    Return iList
End Function

代码的最后一部分是:

    If Div3 = 0 Then
        SoporteTT90 = SoporteTT90 + 1
    Else
        If Div4 = 0 Then
            SoporteTT90 = SoporteTT90 + 2
        Else
            If Div5 = 0 Then
                SoporteTT90 = SoporteTT90 + 3
            Else
                SoporteTT90 = SoporteTT90 + 4
            End If
        End If
    End If
    If Div33 = 0 Then
        SoporteTT90 = SoporteTT90 + 1
    Else
        If Div44 = 0 Then
            SoporteTT90 = SoporteTT90 + 2
        Else
            If Div55 = 0 Then
                SoporteTT90 = SoporteTT90 + 3
            Else
                SoporteTT90 = SoporteTT90 + 4
            End If
        End If
    End If

最后一部分,在不同的功能中重复了很多。有没有办法为该代码创建一个函数?我面临的问题是,当我尝试创建一个新函数时,我没有Div1,Div2,Div3等的值,因为它们是我的主要功能的一部分。如何创建可以使用这些值的函数,或者如何获得重新创建该代码的函数。希望我足够清楚。提前谢谢!

0 个答案:

没有答案