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 является ценным навыком, подчеркивающим важность написания чистого, поддерживаемого кода, независимо от среды.