본문 바로가기
Programming/Refactoring

[Refactoring] 자바 API를 적극 활용하자

by 흑시바 2023. 3. 12.

Java는 String, List 등 개발하는 데 유용한 다양한 API를 많이 제공하고 있다. 😤

해당 API들은 전문가들이 최적화와 검증을 통해 빠르면서 버그가 없게 제작해 놨다.

우리는 이걸 직접 구현할 필요 없이 단순하게 사용만 하면 된다!  😄

 

public void setShibaColor(Color color) {
	if(color == null) {
		throw new NullPointerException("Color 값이 존재하지 않습니다.");
	}
	this.color = color;
}

 

color 필드에 파라미터를 저장할 수 있도록 setter를 개발했다.

해당 메서드는 color 파라미터가 null 값이 들어온다면 NPE를 내보내게 설정되어 있다.

 

public void setShibaColor(Color color) {
	Objects.requireNonNull(color, "Color 값이 존재하지 않습니다.");
	this.color = color;
}

 

해당 코드는 자바 API를 사용한다면 더욱 짧고 가독성 있는 코드로 변경할 수 있다.

 

List<Integer> testCollection = List.of(4,22,3,1,5);

Integer streamMin = testCollection.stream().min(Integer::compareTo).get();
Integer streamMax = testCollection.stream().max(Integer::compareTo).get();

System.out.println("min = " + streamMin);
System.out.println("max = " + streamMax);

 

만약 최소, 최댓값을 구하려면 어떻게 할까? 🤔

 

직접 지역 변수와 반복문을 활용해서 개발해도 되고, 위 코드처럼 stream을 사용해서 개발해도 된다.

하지만 2개의 예시는 별도의 알고리즘 또는 stream과 Interger::compareTo에 대한 지식 및 활용법을 알아야 한다.

 

List<Integer> testCollection = List.of(4,22,3,1,5);

Integer max = Collections.max(testCollection);
Integer min = Collections.min(testCollection);

System.out.println("min = " + streamMin);
System.out.println("max = " + streamMax);

 

하지만 만약 자바 API Collections에 대해서 알고 있다면, 단순히 max, min 메서드를 사용하는 것만으로 가장 빠르고 최적화된 최솟값 최댓값을 구할 수 있다. 거기에 코드의 길이를 줄이고 가독성을 높이는 건 덤이다.

 

이처럼 자바 API를 잘 알고 있다면 3가지 효과를 볼 수 있다.

 

1. 일반적인 문제들을 훨씬 쉽고 효율적으로 해결하여 생산성을 높인다.

2. 사전에 이미 검증된 코드이므로 버그를 일으킬 가능성이 현저히 적다.

3. 코드가 짧고 읽기 편하기 때문에 가독성이 좋아진다.

 

본인이 개발하는 코드가 다른 상황에서도 유용하다고 판단이 된다면, 자바 API에서 이미 제공하고 있을 가능성이 크다.

먼저 개발하기 전에 혹시 자바 API가 제공하고 있지는 않은지 판단하면 좋을 것 같다.

 

[Tip] Objects, Lists, Arrays 등 뒤에 + s를 붙이면 관련한 헬퍼 클래스가 있을 수 있다.

댓글