210303_B책_직접 만들지 말고 자바 AIP 사용하기

정재현·2021년 3월 3일
0

TIL2

목록 보기
3/79

오늘은 2.8 <직접 만들지 말고 자바 AIP 사용하기> 를 진행한다.
프로그래밍 초창기에는 전부 스스로 만들어야했고, 이제는 아니다.
언어 훈련으로는 더할 나위 없지만 시간이 많이 걸리고 오류가 발생하기 쉬웠다.

API에 있는 기능을 다시 구현하지 않고 재사용해야한다.
=>(나도 그러고 싶지만 모르는 API가 많다.. 구현하는 것도 연습이 되지만 자바 개발페이지를 자주 봐야겠다.)

예제 코드를 보며 API의 편리한 사용을 보자면,

class Inventory {
 private List<Supply> supplies = new ArrayList<>();
 
 int getQuantity(Supply supply) {
  if (supply == null) {
   throw new NullPointerException("supply must not be null");
  }
  
  int quantity = 0;
  for (Supply supply : supplies) {
   if (supply.equals(supplyInStock)) {
    quantity++;
   }
  }
  return quantity;
  
 }
}

위 코드는 getQuantity()의 조건문을 통해 인력 매개변수의 null값을 확인하고,
재고 내의 supply의 quantity(수량)을 반환한다.
코드는 좋다.
null값을 확인하며 for each문을 통해 수량을 반환하니깐.
하지만 이 코드가 API를 거친다면?

class Inventory {
 private List<Supply> supplies = new ArrayList<>();
 
 int getQuantity(Supply supply) {
  Objects.requireNonNull(supply, "supply must not be null");
  
  return Collections.frequency(supplies, supply);
 }
}

이렇게 두줄로 커버하니 훠얼씬 짧아졌다.

유틸리티 클래스인 Collections는 Collection 내 객체 출현 횟수를 세는 frequency() 메서드를 제공한다.
Objects 유틸리티 클래스의 requireNonNull() 메서드도 사용했다.
이 메서드는 객체가 null이면 메세지와 함께 NullPointerException을 던진다.
=>(이런 null값을 체크하고 메세지 던지는 것을 업무에서는 try catch를 활용해서 사용했는데, 이 방법도 있구나.. 교체했을 때의 이점이 크다면 교체해도 되지 않을까?)

2개의 메서드로 12줄을 커버했다.
API를 알면 일반적으로 코드의 문제를 훨씬 더 간단히 해결할 수 있다.
API 만큼 중요한 것은 API가 전 세계적으로 광범위한 테스트를 거친다는 사실이며,
직접 작성한 코드보다 버그를 일으킬 확률이 매우 적다.
API에 정통하면 진정한 자바 전문가로 거듭날 수 있다.

오늘의 코멘트: 문제는 자바 API를 많이 모른다는 점이다. 앞으로 구현이 필요한 부분에 무턱대고 구현하기보다 API를 한번 찾아보는 것도 괜찮은 생각이다.

profile
"돈받고 일하면 프로다"

0개의 댓글