- 전체 수업소개 -
많아진 코드 때문에 고통스럽나요? 이 수업은 서로 연관된 코드를 모아서 이름을 붙이는 정리 정돈의 도구인 메소드를 다루는 수업입니다.메소드를 이용하면 1억 줄의 코드도 단 한단어의 이름으로 압축할 수 있습니다. 코드의 복잡성을 삼켜버리는 강력한 이름의 힘을 메소드를 통해서 체험해봅시다.
이미 익숙한 메소드
- 수업소개 -
메소드를 사용하지 않고 자바로 프로그래밍을 하는 것은 불가능합니다. 이미 우리는 메소드를 사용해왔고, 메소드를 만들어왔습니다. 메소드를 공부하기에 앞서서 메소드와 친해지는 시간을 가져보겠습니다.
우리가 자바 애플리케이션을 만들 때는 그 클래스를 만들어야 하고, 그 클래스를 실행시킬 때는 반드시 약속된 이름인 main() 이라는 특수한 이름의 메소드를 정의해 놓으면, 자바는 "~~~ 메소드를 실행해줘" 라는 명령을 받으면 해당 메소드의 main()메소드를 실행하도록 약속되어 있다.
목표 : 나의 메소드를 만들고, main() 이라는 메소드의 여러가지 키워드에 대해서 알아보자
메소드의 기본 형식
* 예제코드 : 아무런 실용성이 없지만 메소드 라는 것이 필요한 순간, 또 메소드의 형식만을 보여주기 위해서 의미없는 코드를 사용할 것이니 상상력을 발휘해서 의미를 부여해보자.
다음과 같은 코드가 있다고 보자. 1억개의 코드들 사이에 같은 기능을하고 있는 반복된 코드가 존재한다.
public class WhyMethod {
public static void main(String[] args) {
// 100000000 lines of code
System.out.println("-");
System.out.println("a");
System.out.println("a");
// 100000000 lines of code
System.out.println("-");
System.out.println("a");
System.out.println("a");
}
}
▶ 이 코드의 문제점은 ?
만약 이 반복된 코드를 수정해야 한다면,,,? 반복된 코드가 1억줄이라면 ,,,? 1억줄의 코드를 수정해야 하는 문제점.
반복된 코드가 1억줄이라면 눈으로 봐서 각각 반복된 코드가 완전히 똑같다는 것을 확신할 수 있나? 거의 불가능 하다는 문제.
똑같은 취지의 코드가 필요해서 제일 끝에 추가해야한다면? 또 1억줄의 코드를 카피해서 뒷줄에 추가해야 한다.
바로 이러한 문제를 해결해주는 도구가 "함수" , 자바에서는 "메소드"라고 하는 테크닉 이다.
서로 연관된 코드를 그룹핑해서 이름을 붙인다.
public class WhyMethod {
public static void main(String[] args) {
// 100000000 lines of code
printTowTimes(); // 메소드 사용
// 100000000 lines of code
printTowTimes();
// 100000000 lines of code
printTowTimes();
}
public static void printTowTimes() { // 메소드 정의
System.out.println("-");
System.out.println("a");
System.out.println("a");
}
}
자바를 실행시키면 public static void printTowTimes(){} 를 보고 printTowTimes 라는 메소드가 존재하고 메소드의 내용을 기억한다.
그리고 main()이라고 하는 메소드에서 printTowTimes(); 메소드를 실행하면 해당 부분에 마치 printTowTimes() 메소드의 내용이 마치 여기 있었던 것처럼 그 때 실행시키는 것이다.
실행결과는 아까와 동일하지만 코드는 훨씬 더 효율적으로 바뀌었다.
- 코드의 의미를 파악하는 것이 훨씬 더 좋아졌다.
반복된 코드의 기능이 무엇인지에 대하여 이름을 부여했기 때문에 어떻게 동작할지 짐작하고 코드를 볼수 있다.
한줄짜리 코드도 그 코드의 의미를 명확하게 하기 위해서 메소드를 만드는 것은 아주 좋은 습관이다. - 코드의 양이 획기적으로 줄어들게 된다.
- 코드 수정이 효율적이다.
메소드 정의 부분에서 한번만 수정하면 된다.
자바의 리팩토링 기능
반복된 코드가 1억줄인데 이 코드를 메소드로 만드려고 하면 굉장히 어려운 작업이다. 자바에서는 이러한 작업을 해주는 리팩토링 기능이 존재한다.
※ 리팩토링 ?
"다시 공장에 보낸다."는 의미로 코드의 결과는 똑같은데 내용을 훨씬 더 효율적으로 만드는 것
1. 선택한 코드를 메소드로 추출
메소드로 만들려는 코드블럭 선택 후, 우클릭 > [Refactor] > [Extract Method]
2. 메소드명 지어주고, "public" 을 선택
[Preview>] 를 통해서 리팩토링될 코드를 미리 확인할 수 있다.
[ok] 를 누르면 코드가 리팩토링 된 것을 확인할 수 있다.
※ 자바 프로그래밍 언어에서 리팩토링의 핵심적인 요소는 "메소드"이다.
'코딩공부 > JAVA' 카테고리의 다른 글
JAVA method [3] - 메소드의 출력 (0) | 2019.12.11 |
---|---|
JAVA method [2] - 메소드의 입력 값 (0) | 2019.12.11 |
JAVA 제어문 [4] - 종합응용 (0) | 2019.10.30 |
JAVA 제어문 [3] - 반복문과 배열 (0) | 2019.10.30 |
JAVA 제어문 [2] - 조건문, 문자의 비교 ( ==과 equals의 차이점 ) (0) | 2019.10.30 |