Effective Java73 [Effective Java] 아이템61 박싱된 기본 타입보다는 기본 타입을 사용하라 ■ 기본 타입과 박싱된 기본 타입의 차이점 기본 타입은 값만 가지고 있으나, 박싱된 기본 타입은 값에 더해 식별성이라는 속성을 갖는다. 즉, 기본 타입의 두 인스턴스는 값이 같아도 서로 다르다고 식별될 수 있다. 기본 타입의 값은 언제나 유효하나, 박싱된 기본 타입은 유효하지 않은 값, 즉 null을 가질 수 있다. 기본 타입이 박싱된 기본 타입보다 시간과 메모리 사용면에서 더 효율적이다. 이런 차이점 때문에 주의해서 사용하지 않으면 문제가 발생할 수 있다. ■ 비교자 문제 발생 예시 Comparator naturalOrder = (i, j) -> (i < j) ? -1 : ( i == j ? 0 : 1); 위의 코드를 naturalOrder.compare(new Integer(42), new Integ.. 2021. 7. 23. [Effective Java] 아이템60 정확한 답이 필요하다면 float와 double은 피하라 ■ float과 double은 정확하지 않을 수 있다. float과 double 타입은 과학과 공학 계산용으로 설계되었다. 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 빠르게 정밀한 근사치로 계산하도록 세심하게 설계되었다. 그렇기 때문에 float과 double은 특히 금융 계산과는 맞지 않는다. 금융 계산은 BigDecimal, int 혹은 long을 사용해야한다. BigDecimal의 아쉬운점으로는 기본 타입보다 사용하기가 훨씬 불편하고 느리다는 점이있다. ■ 핵심 정리 정확한 계산이 필요한 경우 float나 double은 피하라 코딩 시의 불편함이나 성능 저하를 신경 쓰지 않겠다면 BigDecimal을 사용하라 BigDecimal이 제공하는 여덝 가지 반올림 모드를 이용하여 반올림을 완벽히 제.. 2021. 7. 23. [Effective Java] 아이템59 라이브러리를 익히고 사용하라 ■ 라이브러리를 사용하라 표준 라이브러리를 사용하면 그 코드를 작성한 전문가의 지식과 나보다 앞서 사용한 다른 프로그래머들의 경험을 얻을 수 있다. 프로그래머들은 하부 공사보다는 애플리케이션 기능 개발에 집중할 수 있다. 따로 노력하지 않아도 성능이 지속해서 개선된다. 기능이 점점 많아진다. 내가 작성한 코드가 많은 사람에게 낯익은 코드가 된다. 자바 프로그래머라면 적어도 java.lang, java.util, java.io와 그 하위 패키지들에는 익숙해져야한다. 또한 컬렉션 프레임워크와 스트림 라이브러리도 익혀두면 도움이 된다. java.util.concurrent의 동시성 기능도 마찬가지로 알아두면 큰 도움이 된다. 이 패키지는 멀티스레드 프로그래밍 작업을 단순화해주는 고수준의 편의 기능은 물론, 능.. 2021. 7. 23. [Effective Java] 아이템58 전통적인 for문보다는 for-each 문을 사용하라 ■ for문 보다는 for-each문이 낫다 fir문에서 사용하는 반복자와 인덱스는 모두 코드를 지저분하게 한다. 진짜로 중요한건 원소들이다.for each 문이 코드도 더 깔끔하고 오류가 날 일도 없다. 하나의 관용구로 컬렉션과 배열을 모두 처리할 수 있어서 어떤 컨테이너를 다루는지는 신경쓰지 않아도 된다. ■ for-each 문을 사용할 수 없는 상황 세 가지 파괴적인 필터링 : 컬렉션을 순회하면서 선택된 원소를 제거해야 한다. 반복자의 remove 메서드를 호출해야 한다. 자바8는 Collection의 removeIf 메서드를 사용해 컬렉션을 명시적으로 순회하는 일을 피할 수 있다. 변형 : 리스트나 배열을 순회하면서 그 원소의 값 일부 혹은 전체를 교체해야 한다면 리스트의 반복자나 배열의 인덱스를.. 2021. 7. 23. [Effective Java] 아이템57 지역변수의 범위를 최소화하라 ■ 지역변수 범위 최소화 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역 변수의 범위를 줄이는 가장 강력한 기법은 해당 변수를 가장 처음 사용할 때 선언하는 것이다. 거의 모든 지역 변수는 선언과 동시에 초기화해야한다. 변수를 실제로 사용하는 시점엔 타입과 초기값이 기억나지 않을 수 있다. ■ 반복문과 지역변수 반복문은 for, for-each 형태의 반복문안에서는 반보 변수의 범위가 반복문의 몸체, 그리고 for 키워드 몸체 사이의 괄호 범위로 제한된다. 따라서 반복 변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니면 while문보다는 for문을 사용하는게 낫다. ■ 메서드를 작게 유지하고 한가지 기능에 집중하라 메서드를 작게 유지하면 한.. 2021. 7. 23. [Effective Java] 아이템56 공개된 API 요소에는 항상 문서화 주석을 작성하라 ■ 자바독(Javadoc)이란? API 문서화 유틸리티 소스코드 파일에서 문서화 주석이라는 특수한 형태로 기술된 설명을 추려 API 문서로 변환해줌 ■ 공개된 API 요소에는 항상 문서화 주석을 작성하라. 여러분의 API를 올바로 문서화하려면 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에 문서화 주석을 달아야 한다. 공개된 모든 클래스, 인터페이스, 메서드, 필드 선언에doc comment를 달아야 한다. 공개 클래스는 기본 생성자에 주석을 달 수 있는 방법이 없으니 절대 기본 생성자를 사용해서는 안된다. ■ 메서드용 문서화 주석에는 해당 메서드와 클라이언트 사이의 규약을 명료하게 기술 how가 아닌 what을 기술할 것. (상속용으로 설계된 API가 아닌 이상) 메서드를 성공적으로 호출하기 위.. 2021. 7. 12. 이전 1 2 3 4 5 6 ··· 13 다음