메서드 활용 패턴 (초급)
메서드 활용 패턴 (초급)
메서드를 "만들 줄 아는 것"과 "잘 쓰는 것"은 다릅니다. 이 레슨은 시그니처 해부부터 매개변수 전달, 여러 값 반환, 가변 인자, 오버로딩 선택 규칙, 재귀, 메서드 분리 리팩터링까지 초급 단계에서 알아야 할 메서드 사용법을 25개 패턴으로 모았습니다. 끝내면 "이 값은 왜 안 바뀌지?", "어느 오버로딩이 호출되지?", "재귀는 언제 터지지?"에 스스로 답할 수 있습니다.
1. 왜 배우는가
04 레슨에서 메서드가 "객체의 행동"이라는 것을 배웠습니다. 그런데 실제 코드를 읽어 보면 메서드는 그보다 훨씬 다양한 모습으로 나타납니다. 값을 돌려주는 메서드, 아무것도 돌려주지 않는 메서드, 인자를 몇 개든 받는 메서드, 이름은 같은데 여러 개인 메서드, 자기 자신을 다시 부르는 메서드. 각각 "왜 그렇게 쓰는지"를 모르면 남의 코드를 읽을 수 없고, 내 코드는 main 하나에 200줄이 쌓입니다.
메서드를 잘 쓴다는 것은 큰 문제를 작은 문제로 쪼개고, 쪼갠 조각에 이름을 붙이는 것입니다. isPalindrome이 normalize와 reverse를 부르는 구조는 "정리한 뒤 뒤집어서 비교한다"는 생각을 그대로 코드에 옮긴 것입니다. 이 습관은 나중에 클래스 설계, 테스트 작성, 리팩터링의 기초가 됩니다.
또 하나, 자바의 메서드 호출은 항상 값 전달(call by value)이고, 오버로딩은 컴파일 시점에 결정되며, 재귀는 스택 프레임을 소비합니다.
이 세 원리를 모르면 "배열은 바뀌는데 int는 왜 안 바뀌지?", "call(1)이 왜 long 버전을 호출하지?", "왜 StackOverflowError가 나지?" 같은 질문에 답할 수 없습니다. 이 레슨은 패턴을 외우는 것이 아니라 원리로 패턴을 설명하는 것을 목표로 합니다.