[유플러스] enum을 활용한 하드 코딩 제거

enum과 하드 코딩

문제 상황

1. String으로 작성되어 있던 하드 코드를 제거하라는 요구사항 발생

해결 방안 논의

1. .properties 사용

@Value를 통해 값을 가져오는 경우 결국 하드코딩을 사용하는 것과 같음.
@ConfigruationProperties를 통해서 하드코딩을 제거할 수 있으나 코드 작성하는 시간이 발생. 다른 인원들이 이해하기 위해서 가이드 파일 작성 필요함.

person.name=yang
person.zip-code=1919
@ConfigurationProperties("person")
public class PersonProperties {
	private String name;
	private int zipCode;

   /* getter, setter 생략*/

}
public class Person {
	private String name;
	private int zipCode;
   /* getter, setter 생략 */
}
@Configuration
@EnableConfigurationProperties(PersonProperties.class)
public class PersonConfiguration {

	@Bean
	public Person person(PersonProperties properties) {
		Person person = new Person();
		person.setName(properties.getName());
		person.setZipCode(properties.getZipCode());
		return person;
	}

}
@Component
public class Runner implements ApplicationRunner {

	@Autowired
	PersonProperties properties;

	@Autowired
	Person person;

	@Override
	public void run(ApplicationArguments args) throws Exception {
		System.out.println(properties); // PersonProperties{name='yang', zipCode=1919}
		System.out.println(person); // Person{name='yang', zipCode=1919}
	}
}

2. enum 사용

enum의 경우 간단하며, 쉽게 사용할 수 있음.
결국 하드 코딩 제거를 위해 enum을 사용하기로 결정되어 아래와 같은 형태로 사용하도록 샘플 코드를 작성했다.

public enum ProdType {
   PRICE("P", "요금제"), 
   ADD_SERVICE("R", "부가서비스");

   String code;
   String desc;

   ProdType(String code, String desc) {
      this.code = code;
      this.desc = desc;
   }

   public boolean isEqualCode(String code) {
      return this.code.equals(code);
   }
}

나중에 자세히 공부해야 할 것들

배민 enum 활용기 : https://techblog.woowahan.com/2527/