메소드와 함수는 프로그래밍에서 중요한 개념으로, 비슷하지만 사용하는 방식과 맥락에서 차이가 있습니다. 이 차이를 명확히 이해하면 코드 설계와 개발에 큰 도움이 됩니다.
1. 함수(Function)란?
함수는 특정 작업을 수행하는 코드 블록으로, 독립적으로 호출될 수 있습니다.
- 정의: 일반적으로 클래스나 객체에 속하지 않고, 독립적으로 정의된 코드 블록.
- 언제 사용: 입력(인자)을 받아 처리하고, 결과(출력)를 반환하는 로직을 작성할 때 사용.
특징
- 클래스나 객체에 종속되지 않음.
- 독립적으로 동작하며, 데이터나 상태를 보관하지 않음.
- 함수 호출 시, 이름과 전달할 매개변수만 있으면 호출 가능.
예제 (Java):
// 독립적으로 정의된 함수
public static int add(int a, int b) {
return a + b;
}
// 호출
int result = add(3, 5); // result = 8
2. 메소드(Method)란?
메소드는 특정 객체나 클래스에 속한 함수입니다.
- 정의: 클래스 안에서 정의되고, 클래스나 객체에 연결되어 동작하는 함수.
- 언제 사용: 객체의 상태(필드)에 접근하거나, 객체가 수행할 작업(행동)을 정의할 때 사용.
특징
- 클래스나 객체 내부에서만 호출 가능.
- 일반적으로 객체의 데이터를 읽거나 수정하는 데 사용.
- this(Java, Kotlin) 또는 self(Python)를 통해 객체에 접근.
예제 (Java):
class Calculator {
private int total;
// 메소드
public void add(int value) {
this.total += value; // 객체 상태(total)를 수정
}
public int getTotal() {
return this.total; // 객체 상태(total)를 반환
}
}
// 호출
Calculator calc = new Calculator();
calc.add(5); // 객체의 메소드 호출
int result = calc.getTotal(); // 객체의 메소드 호출, result = 5
3. 주요 차이
구분 | 함수(Function) | 메소드(Method) |
정의 위치 | 클래스 외부에서 독립적으로 정의 | 클래스 내부에서 정의 |
호출 방식 | 이름만으로 호출 가능 | 객체나 클래스를 통해 호출 |
데이터 접근 | 독립적으로 동작하며, 객체 상태에 접근하지 않음 | 객체나 클래스의 데이터(필드)에 접근 가능 |
종속성 | 객체와 무관하게 동작 | 객체나 클래스에 종속되어 동작 |
예시 | add(3, 5) | calc.add(5) |
4. 요약
- 함수(Function):
- 독립적인 코드 블록으로, 클래스나 객체에 종속되지 않음.
- 작업을 수행하고 결과를 반환하는 역할.
- 메소드(Method):
- 클래스나 객체에 속한 함수로, 객체의 상태를 읽거나 수정하거나, 행동을 정의.
- 객체 지향 프로그래밍에서 주로 사용.
한 줄 요약: 모든 메소드는 함수이지만, 모든 함수가 메소드는 아닙니다. 😊
'궁금증' 카테고리의 다른 글
코드 커버리지(Code Coverage)란 무엇일까? (0) | 2024.12.16 |
---|---|
DDD에서 팩토리(Factory)를 왜 사용하는거죠? (1) | 2024.12.15 |
TDD vs DDD: 개발을 바라보는 두 가지 시선 (0) | 2024.12.15 |
[SQL] Join vs SubQuery: 언제, 왜, 어떻게 선택할까? (1) | 2024.12.09 |
컨트롤러와 서비스에서 동일한 메서드명을 사용하는 것이 적절할까? (0) | 2024.12.06 |