Visual Basic의 절차적 프로그래밍은 코드 재사용을 통해 중복을 최소화하고 가독성을 높이기 위해 하위 프로그램(Sub, Function)을 사용하여 코드를 명확하게 구조화할 수 있습니다.
VB에서 프로그래밍은 처음에 큰 코드 블록을 폼과 모듈 내에서 작업하는 방식으로 발전했습니다. 이는 논리 중복과 디버깅을 복잡하게 만들었습니다. 프로시저와 함수로 분할하는 것은 더 모듈화된 아키텍처로의 전환이었습니다.
구조가 잘못된 애플리케이션은 서로 다른 위치에 동일한 코드가 포함되어 있어 유지보수와 오류 수정이 어려워지고 재사용성이 감소합니다.
인수와 반환 값을 사용하는 프로시저(Sub) 및 함수(Function)를 사용합니다. 반복적인 논리는 별도의 메소드로 분리하는 것이 좋은 관행이며, DRY(동일한 코드를 반복하지 마세요) 원칙을 준수합니다.
코드 예:
' 재사용 가능한 함수를 호출하는 핸들러 Sub btnCalculate_Click(sender As Object, e As EventArgs) Dim result As Double = CalculateDiscount(100, 0.2) MessageBox.Show($"할인: {result}") End Sub ' 재사용 가능한 함수 Function CalculateDiscount(total As Double, rate As Double) As Double Return total * (1 - rate) End Function
주요 특징:
Visual Basic에서 반환 값의 유형만 다를 경우 같은 이름의 프로시저와 함수를 선언할 수 있나요?
Visual Basic에서는 프로시저나 함수의 이름은 해당 범위 내에서 고유해야 하며, 반환 값 유형만으로는 오버로드할 수 없습니다. 오버로드는 오직 매개변수 시그니처에 따라 지원됩니다.
코드 예:
' 잘못된 — 컴파일 오류 Function GetValue() As Integer Return 1 End Function Function GetValue() As String Return "Test" End Function
Optional로 매개변수를 선언할 경우 기본값을 꼭 지정해야 하나요?
네, Optional 매개변수는 기본값을 반드시 지정해야 합니다.
코드 예:
Function Sum(a As Integer, Optional b As Integer = 0) As Integer Return a + b End Function
Exit Sub/Exit Function을 사용하여 현재 프로시저뿐만 아니라 상위 프로시저에서도 나갈 수 있나요?
아니요, Exit Sub/Exit Function은 오직 현재 프로시저에서만 나갑니다. 외부 프로시저 수준에서 흐름 제어를 하려면 If/Return과 같은 흐름 제어 구조나 예외 처리를 사용해야 합니다.
할인 계산이 여러 폼의 이벤트 핸들러에 각각 구현되어 있습니다. 수식을 변경하면 모든 위치의 코드를 수동으로 수정해야 합니다.
장점:
단점:
할인 계산을 CalculateDiscount라는 별도의 함수로 분리하고 필요한 모든 곳에서 호출하여 사용하는 방법입니다.
장점:
단점: