Visual Basic for Applications:
Рефакторинг

Как это делается:

Рассмотрим простой пример на Visual Basic для Приложений (VBA), где у нас есть подпрограмма, которая печатает детали сотрудника. Изначально код перегружен, его сложно поддерживать или расширять.

Sub PrintEmployeeDetails()
    Dim name As String
    Dim age As Integer
    Dim department As String
    name = "John Doe"
    age = 30
    department = "IT"
    
    MsgBox "Имя: " & name & vbCrLf & "Возраст: " & age & vbCrLf & "Отдел: " & department
End Sub

Шаг рефакторинга 1: Выделение метода. Одна из самых распространенных техник рефакторинга - это выделение определенного куска кода в свой собственный метод. Это делает код более модульным и легче для понимания.

Sub PrintEmployeeDetails()
    Dim name As String
    Dim age As Integer
    Dim department As String
    name = "John Doe"
    age = 30
    department = "IT"
    
    ПоказатьСообщение name, age, department
End Sub

Private Sub ПоказатьСообщение(name As String, age As Integer, department As String)
    MsgBox "Имя: " & name & vbCrLf & "Возраст: " & age & vbCrLf & "Отдел: " & department
End Sub

Шаг рефакторинга 2: Использование структуры. Этот шаг включает в себя использование структуры данных для хранения связанных данных, что улучшает ясность кода и упрощает передачу сгруппированных данных.

Type Сотрудник
    name As String
    age As Integer
    department As String
End Type

Sub PrintEmployeeDetails()
    Dim emp As Сотрудник
    emp.name = "John Doe"
    emp.age = 30
    emp.department = "IT"
    
    ПоказатьСообщение emp
End Sub

Private Sub ПоказатьСообщение(emp As Сотрудник)
    MsgBox "Имя: " & emp.name & vbCrLf & "Возраст: " & emp.age & vbCrLf & "Отдел: " & emp.department
End Sub

Эти шаги преобразуют перегруженный код в модульный, структурированный код, значительно улучшая читаемость и поддерживаемость.

Глубокое погружение

Концепция рефакторинга стара, как само программирование, но книга Мартина Фаулера “Refactoring: Improving the Design of Existing Code” вывела его на главную сцену, подчеркнув его важность в процессе разработки программного обеспечения. В Visual Basic для Приложений рефакторинг может быть несколько более сложным из-за отсутствия встроенных инструментов, доступных в более современных интегрированных средах разработки (IDEs), поддерживающих автоматизированный рефакторинг.

Однако это не умаляет его важности. Даже в VBA применение базовых техник рефакторинга вручную может значительно улучшить код, делая его чище и более эффективным. Хотя у VBA может не быть таких же современных удобств, принципы хорошего дизайна кода остаются универсальными. Разработчики, приходящие из других языков, могут найти ручной процесс утомительным, но безусловно оценят преимущества вложения времени в улучшение качества кода с самого начала.

Для более мощных сред разработки или при работе над особенно сложными проектами может быть целесообразно исследовать альтернативы, предлагающие более мощные инструменты рефакторинга или преобразование проектов VBA в язык .NET, где Visual Studio предоставляет обширную поддержку рефакторинга. Тем не менее, понимание и применение принципов рефакторинга в VBA является ценным навыком, подчеркивающим важность написания чистого, поддерживаемого кода, независимо от среды.