Можно ли уменьшить количество строк кода в этом коде vb.net? - PullRequest
0 голосов
/ 26 июля 2011

У меня есть следующий код, мой работодатель хочет, чтобы я сократил строки кода , чтобы выполнить работу.

Private Function getClientSheetNames(Optional ByVal type As String = "all") As List(Of String)
    If type = "extra" Then
        Return clientExtraSheetNames
    End If
    Dim prev, curr As New List(Of String)
    For Each name In clientMonthlySheetNames
        curr.Add(name + " (" + currMonth + ")")
    Next name
    If type = "currMonth" Then
        Return curr
    End If
    For i = 1 To clientMonthlySheetNames.Count - 1
        prev.Add(clientMonthlySheetNames(i) + " (" + prevMonth + ")")
    Next
    If type = "prevMonth" Then
        Return prev
    End If
    If type = "monthly" Then
        Return curr.Union(prev).ToList
    End If
    Return clientExtraSheetNames.Union(curr.Union(prev)).ToList
End Function

Private Function getDevSheetNames(Optional ByVal type As String = "all") As List(Of String)
    If type = "extra" Then
        Return devExtraSheetNames
    End If
    Dim sheetNames, prev, curr As New List(Of String)
    For Each name In devMonthlySheetNames
        curr.Add(name + " (" + currMonth + ")")
    Next name
    If type = "currMonth" Then
        Return curr
    End If
    For Each name In devMonthlySheetNames
        prev.Add(name + " (" + prevMonth + ")")
    Next name
    If type = "prevMonth" Then
        Return prev
    End If
    If type = "monthly" Then
        Return curr.Union(prev).ToList
    End If
    sheetNames.Add(devExtraSheetNames(0))
    sheetNames.AddRange(curr.Union(prev).ToList)
    sheetNames.AddRange(devExtraSheetNames.GetRange(1, devExtraSheetNames.Count - 1))
    Return sheetNames
End Function

Я не могу понять, как я могу сократитьлинии и имеют одинаковую функциональность!

Есть ли какая-либо конструкция vb.net, которая может уменьшить loc за счет лучшей реализации?

Могу ли я получить новыйфункция, которая будет вызываться из getClientSheetNames и getDevSheetNames, которая может реализовать восстановление кода?

Могу ли я ввести полиморфизм в возможную новую функцию?

Добро пожаловать!

Пожалуйста, помогите !!

1 Ответ

4 голосов
/ 26 июля 2011

Функция должна делать одну вещь.Обе эти функции выполняют пять отдельных, не связанных задач.Нарисуйте блок-схему, и вы увидите, что у вас почти пять функций.Поэтому разделите каждую функцию на пять отдельных функций.

Function getAllClientSheetNames() As List(Of String)
Function getExtraClientSheetNames() As List(Of String)
Function getCurrentMonthClientSheetNames() As List(Of String)
Function getPreviousMonthClientSheetNames() As List(Of String)
Function getMonthlyClientSheetNames() As List(Of String)

Самое большее, что они коррелируют, так это то, что getAll~ включает в себя getCurrentMonth~ и getPreviousMonth~, которые можно вызывать с getAll~.

Это улучшит логику и читабельность.Это может (без гарантий) даже уменьшить ваш LoC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...