자바56 [Effective Java] 아이템63 문자열 연결은 느리니 주의하라 문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다. 한 줄짜리 출력 값 혹은 작고 크기가 고정된 객체의 문자열 표현을 만들 때는 괜찮지만, 본격적으로 사용하기 시작하면 성능 저하를 감내하기 어렵다. 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다. 문자열은 불변이라서 두 문자열을 연결할 경우 양쪽의 내용을 모두 복사해야한다. 대신에 StringBuilder의 append 메서드를 사용하라. 문자 배열을 사용하거나, 문자열(연결하지 않고)을 하나씩 처리하는 방법도 있다. 2021. 8. 1. [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] 아이템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 ··· 10 다음