Refactoring & CleanCode

전역 데이터 (Global Data)

Tommy__Kim 2023. 4. 10. 11:34

 

전역데이터는 어느 곳에서 건드릴 수 있고 값을 누가 바꿨는지 찾아내기 어렵다는 단점이 있다. 

(자바에서의 전역 데이터는 예시로는 public static 으로 되어있는 변수가 있다.)

이러한 전역 데이터의 단점을 보완하기 위한 대표적인 리팩터링은 변수 캡슐화하기 이다.


변수 캡슐화

변수 캡슐화는 예시로 바로 알아보려고 한다. 

주소를 가지고 있는 Address 클래스에 전역 변수로 postal Code 있다.

public class Address{
	
	public static String postalCode = 12345;
    
    ... 

}

이러한 클래스의 경우 외부 클래스에서 다음과 같이 값을 변경할 수 있다. 

public class UserService{

	...
    
    public void setPostalCode{
    	Address.postalCode = 2;
    }
}

postalCode에 말이 안 되는 값이 들어갔지만 이를 제재할 수 있는 방법이 딱히 없다. 

이러한 코드가 생기게 되면 오류가 발생하게 되고, 그 오류를 찾기 어렵게 된다. 따라서 변수 캡슐화를 진행해준다. 

public class Address {

    private static String postalCode = 12345;
    ... 
    
    public static void setPostalCode(String updateCode){
    	// update code에 대한 검증 로직 
        Address.postalCode = updateCode
    }
    ...
}

변수 캡슐화 과정 

  1. 전역 변수를 private으로 설정( 외부에서 값을 바꾸지 못하도록)
  2. setter 및 getter를 사용해서 전역 변수를 수정 및 조회 

이러한 과정을 거침으로 인해 외부에서 값을 설정할 때 유효성 검사를 할 수 있고, 어디서 사용하는지 쉽게 알 수 있다. 

'Refactoring & CleanCode' 카테고리의 다른 글

중복코드 (Duplicated Code)  (0) 2023.04.05
기이한 이름 (Mysterious Name)  (0) 2023.04.05