본문 바로가기

코딩공부/JAVA

JAVA method [4] - 메소드의 활용

- 수업소개 -

메소드를 활용하면 무엇이 좋은지를 메소드를 도입하기 전과 도입 후의 차이점을 통해 비교해보겠습니다. 

 

이전 수업에서 만들었던 [JAVA1 - 나의 앱 만들기] 코드를 수정하여 메소드를 쓰면 어떤 폭발적인 효과가 있는지 알아보자 [참고]

public class AccountingApp {

	public static void main(String[] args) {
		
		double valueOfSupply = 10000.0; //공급가
        double vatRate = 0.1;	//부가가치세율 
        double vat = valueOfSupply * vatRate; //부가세 
        double total = valueOfSupply + vat; //합계(공급가 + VAT) : 소비자 지불 금액  
        
        System.out.println("Value of supply : " + valueOfSupply); 
        System.out.println("VAT : " + vat);	
        System.out.println("Total : " + total);
       
	}
}

 

이 코드가 굉장히 복잡한 코드라고 상상하고, 이 안에 사업을 위해 필요한 로직 뿐 아니라 다른 여러가지 로직들이 하나의 파일 안에 다 들어있다라고 생각해보자

 

이 total 을 구하는 코드가 1억개의 코드이고, 이 코드를 1년만에 다시 보거나 다른 사람이 코드를 처음 만났다라고 하면 이 코드의 취지를 파악하기는 아주 어렵다. 이럴 때 필요한 것이 "정리정돈"이다.

즉, 메소드를 이용해서 저 처리방법에 이름을 붙일 수 있다면, 코드를 훨씬 더 단정하게 정리정돈할 수 있고, 낯선 코드를 만난다고 하더라도 이름을 통해서 그 코드의 취지를 단박에 파악할 수 있다.

 

 

1. 부가세를 구하는 코드를 getVAT() 메소드로 만들어서 계산결과를 return 값으로 준다.

vat는 double 형이므로 return 데이터타입을 double 형으로 정의한다. public static double getVAT(){}

에러가 나는 이유는?

valueOfSupply 와 vatRate 는 메소드 안에서만 사용할 수 있는 지역변수이다. 이 두개의 변수를 AccountingApp 이라는 클래스 안에 있는 모든 메소드가 사용할 수 있게 하려면 main() 메소드 바깥, AccountingApp 클래스 안에 위치시켜서 전역변수로 만들면 된다.

변수 앞에 public static 을 붙여서 valueOfSupply 와 vatRate 가 AccountingApp이라는 클래스의 직접적인 소속이다 라고 정해준다.

 

 

실행결과 아까와 똑같이 잘 동작한다.

 

메소드를 통해서 얻을 수 있는 효과

  1. 코드의 단순화
    부가세를 구하는 코드가 1억줄이었다고 한다면 이 코드를 메소드의 이름 한 줄로 바꾸는 것을 통해서 코드를 훨씬 더 단순화 시킬 수 있다.
  2. 네이밍을 통한 코드의 의미 파악
    코드의 구체적인 동작 방법의 이름을 붙이는 것을 통해서 코드의 기능이 무엇인지 아주 분명하게 전달할 수 있다.
  3. 코드의 재사용
    메소드를 통해서 구현되어 있는 결과를 재활용하고 있기 때문에 메소드의 내용만 수정하면 메소드를 사용하는 모든 곳에 적용이 된다.

 

public class AccountingApp {
	//공급가
	public static double valueOfSupply = 10000.0; 
	//부가가치세율 
    public static double vatRate = 0.1;

	public static void main(String[] args) {
		
		
        //부가세 	
        //double vat = valueOfSupply * vatRate; 
//        double vat = getVAT();
        //합계(공급가 + VAT) : 소비자 지불 금액  
//        double total = valueOfSupply + vat; 
//       double total = getTotal();
        
        System.out.println("Value of supply : " + valueOfSupply); 
        System.out.println("VAT : " + getVAT());	//부가세
        System.out.println("Total : " + getTotal()); // 합계 
       
	}
	public static double getVAT() {
		return valueOfSupply * vatRate;
	}
	public static double getTotal() {
		return valueOfSupply + getVAT(); //vat값을 여기서 직접 구해오도록 한다.
	}
}