본문 바로가기

코딩공부/JAVA

JAVA method [1] - 메소드의 기본 형식

- 전체 수업소개 -

많아진 코드 때문에 고통스럽나요? 이 수업은 서로 연관된 코드를 모아서 이름을 붙이는 정리 정돈의 도구인 메소드를 다루는 수업입니다.메소드를 이용하면 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. 코드의 의미를 파악하는 것이 훨씬 더 좋아졌다. 
    반복된 코드의 기능이 무엇인지에 대하여 이름을 부여했기 때문에 어떻게 동작할지 짐작하고 코드를 볼수 있다. 
    한줄짜리 코드도 그 코드의 의미를 명확하게 하기 위해서 메소드를 만드는 것은 아주 좋은 습관이다.
  2. 코드의 양이 획기적으로 줄어들게 된다.
  3. 코드 수정이 효율적이다.
    메소드 정의 부분에서 한번만 수정하면 된다.

자바의 리팩토링 기능

반복된 코드가 1억줄인데 이 코드를 메소드로 만드려고 하면 굉장히 어려운 작업이다. 자바에서는 이러한 작업을 해주는 리팩토링 기능이 존재한다.

 

리팩토링 ?

"다시 공장에 보낸다."는 의미로 코드의 결과는 똑같은데 내용을 훨씬 더 효율적으로 만드는 것 

 

1. 선택한 코드를 메소드로 추출

메소드로 만들려는 코드블럭 선택 후, 우클릭 > [Refactor] > [Extract Method] 

 

2. 메소드명 지어주고, "public" 을 선택

 

[Preview>] 를 통해서 리팩토링될 코드를 미리 확인할 수 있다.

 

[ok] 를 누르면 코드가 리팩토링 된 것을 확인할 수 있다.

 

 

※ 자바 프로그래밍 언어에서 리팩토링의 핵심적인 요소는 "메소드"이다.