혼돈의 매개변수와 인수간의 호칭
잘 알고 쓰는 사람도 많지만, 코드를 설명하거나 할 때 이 매개변수와 인수라는 용어의 차이를 구분하지 못해서 단어가 계속 뒤섞이고 혼동해서 사용하는 개발자들이 많다. 다음 코드를 보며 얘기를 해보자.
public class TestClass{
public void execute(Collection<Integer> list){
for(Integer num : list){
System.out.println("num: "+ num);
}
}
}
public class Main {
public static void main(String[] args){
TestClass tc = new TestClass();
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
tc.execute(list);
}
}
Java
복사
여기서 로직을 설명할때 Collection<Integer> list는 인수일까 매개변수일까? 그리고 tc.execute(list)부분의 list는 인수일까 매개변수일까?
매개변수는 메서드 선언에 정의한 변수
인수는 메서드 호출 시 넘기는 실제 값
즉, Collection<Integer> list는 매개변수가 되고, main 로직안의 list는 인수값이 된다.
그래서, 매개변수 타입은 Collection 이라 하고 인수 타입은 List라고 불러야 함이 맞다.
보통은 이 두 개의 단어를 명확하게 구분하지 않고, 다들 적당히 섞어서 말해도 알아서 이해하기에 크게 신경쓸 내용은 아니지만, 나 역시 포스팅을 하고 얘기를 할 때 이 두 단어가 계속 섞이면서 반대로 말하는 경우도 많았다.
자바 언어 명세에서는 위와같이 정의를 했으니, 소소하지만 헷갈리지 말고 사용하도록 하자.