메서드란? 일련의 문(Statememt)을 조합하여 하나의 동작으로 추상화 한 단위.
2개의 수를 입력받아서 그 값을 더한 다음, 출력하는 간단한 소스를 작성하면 아래와 같다.
private static int a;
private static int b;
static void Main(string[] args)
{
// 입력 처리
string inputA = Console.ReadLine();
a = int.Parse(inputA);
string inputB = Console.ReadLine();
b = int.Parse(inputA);
// 두 값 덧셈
int sum = a + b;
// 출력
Console.WriteLine(sum);
}
위 코드는 크게 입력부분과 덧셈, 출력으로 나뉠 수 있다.
코딩을 하면서 위와 같이 개념을 덩어리화 하여 머릿속에 정리하고 있는 습관을 가지고 있으면 좋다.
이 코드는 너무도 간단하기 때문에 한눈에 구성이 눈에 들어오지만 만약, 한 부분 부분이 복잡하고 길다고 가정해보자.
(입력 처리를 하는 부분의 코드가 위의 예시에서는 단 4줄에 불과하지만 40줄 혹은 400줄이라고 가정해보자.)
그런 경우에는 아마도 한번에 코드 윤곽이 잡히지 않을 것이다.
바로 이 때 메소드를 사용하는 것이다. 아래와 같이.
private static int a;
private static int b;
static void Main(string[] args)
{
// 입력 처리
HandleInput();
int sum = a + b;
Console.WriteLine(sum);
}
private static void HandleInput()
{
string inputA = Console.ReadLine();
a = int.Parse(inputA);
string inputB = Console.ReadLine();
b = int.Parse(inputA);
}
후에 코드가 개선되고 기능이 추가되어 아무리 입력처리단이 길어진다고 하더라도 Main 메소드는 똑같은 구성을 지닐 것이다.
프로그래밍을 처음 접하는 사람은 위 코드를 해석할 때 순차적으로 해석할 것이다. 무슨 말이냐면 Main함수에서 HandleInput() 메소드까지 내려오면 곧이어 HandleInput() 메소드까지 파고들어가서 그 안의 내용을 전부 보려 한다는 뜻이다.
그러나 숙달되고 요령있는 전문가는 그렇지 않을 가능성이 높다. 아마도 그렇게 하는 대신 HandleInput() 메소드의 이름과 위치 혹은 주석과 같은 정보로 해당 메소드가 어떤 역할을 수행할 것이라고 유추하고 다음줄로 바로 내려 갈 것이다. (HandleInput() 메소드 내용을 보지 않고!)
그렇게 코드의 전체 윤곽이 머릿속에 그려지면 디테일을 그리기 위해 HandleInput() 메소드 내용을 볼 것이다.
메소드를 처음 알게되면 무작정 길어진 코드를 배분하기 위해 의미없이 메소드를 만들어서 코드를 찢어놓게 한다. 물론 그 과정에서 운이 좋으면 생각의 덩어리와 메소드가 일치하게 되어 좋은 결과를 놓을수도 있지만 왜 메소드를 쓰는지를 잘 생각하자.
생각의 덩어리는 어떠한 논리에서 하나하나의 개별 동작 혹은 움직임이라고 할 수 있다. (위 예제소스에서는 입력값을 처리하다)
그래서 메소드는 객체지향에서 동사로 부르는 것이다.
'C# 강의' 카테고리의 다른 글
1.2. 변수 사용 (0) | 2023.01.13 |
---|