728x90
반응형

Effective Java 67

[Effective Java] 아이템 57. 지역변수의 범위를 최소화하라.

🎯 아이템 57. 지역변수의 범위를 최소화하라. 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. ⭐ 지역변수의 범위를 줄이는 가장 강력한 기법 1️⃣ 가장 처음 쓰일 때 선언하기 public class Main { public static void main(String[] args) { int scope = 0; /* main메서드가 완료될 때까지 scope변수는 살아있다. */ } } 변수를 항상 최상단에 선언하는 버릇을 가진 개발자가 존재한다. 하지만 그건 변수의 범위를 메소드의 모든 범위에 속하게 하며 가독성마저 떨어지게 만드는 행위다. 2️⃣ 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. 초기화할 정보가 부족하다면 정보가 충분해질때까지 선언..

Java 2023.03.26

[Effective Java] 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라.

🎯 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라. 문서화 주석은 API를 문서화하는 가장 훌륭하고 효과적인 방법이다. 공개 API라면 빠짐없이 설명을 달아야 한다. 표준 규약을 일관되게 지키자. 문서화 주석에 임의의 HTML 태그를 사용할 수 있음을 기억하라. 단, HTML 메타문자는 특별변하게 취급해야 한다. javadoc click here. 자바독은 소스코드 파일에서 문서화 주석이라는 특수한 형태로 기술된 설명을 추려 API문서로 변환해준다. 참고 자료 Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, 프로그래밍인사이트(2018) http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mal..

Java 2023.03.25

[Effective Java] 아이템 55. 옵셔널 반환은 신중히 하라.

🎯 아이템 55. 옵셔널 반환은 신중히 하라. 값을 반환하지 못할 가능성이 있고, 호출할 때마다 반환값이 없을 가능성을 염두에 둬야 하는 메서드라면 옵셔널을 반환해야 할 상황일 수 있다. 하지만 옵셔널 반환에는 성능 저하가 뒤따르니, 성능에 민감한 메서드라면 null을 반환하거나 예외를 던지는 편이 나을 수 있다. 그리고 옵셔널을 반환값 이외의 용도로 쓰는 경우는 매우 드믈다. 옵셔널은 원소를 최대 1개 가질 수 있는 '불변'컬렉션이다. 보통은 T를 반환해야 하지만 특정 조건에서는 아무것도 반환하지 않아야 할때 T 대신 Optional를 반환하도록 선언하면 된다. 컬렉션에서 최댓값을 구한다(컬렉션이 비었으면 예외를 던진다). public static E max(Collection c) { ..

Java 2023.03.25

[Effective Java] 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라.

🎯 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라. null을 반환하는 API는 사용하기 어렵고 오류 처리 코드도 늘어난다. 그렇다고 성능이 좋은 것도 아니다. 컬렉션이나 배열 같은 컨테이너가 비었을 때 null을 반환하는 메서드를 사용할 때면 항시 방어 코드를 넣어줘야 한다. 클라이언트에서 방어 코드를 빼먹으면 오류가 발생할 수 있다. 실제로 객체가 0개일 가능성이 거의 없는 상황에서는 수년 뒤에야 오류가 발생하기도 한다. 빈 컬렉션을 반환하는 올바른 예 public List getCheeses(){ return new ArrayList(cheesesInStock); } 대부분의 상황에서는 이렇게 하면 된다. 가능성은 작지만, 사용 패턴에 따라 빈 컬렉션 할당이 성능을 눈에 띄게 떨어 ..

Java 2023.03.24

[Effective Java] 아이템 53. 가변인수는 신중히 사용하라.

🎯 아이템 53. 가변인수는 신중히 사용하라. 인수 개수가 일정하지 않은 메서드를 정의해야 한다면 가변인수가 반드시 필요하다. 메서드를 정의할 때 필수 매개변수는 가변인수 앞에 두고, 가변인수를 사용할 때는 성능 문제까지 고려하자. 인수가 1개 이상이어야 하는 가변인수 메서드 - 잘못 구현한 예! static int min(int... args) { if (args.length == 0) throw new IllegalArgumentException("인수가 1개 이상 필요합니다."); int min = args[0]; for (int i = 1; i < args.length; i++) if (args[i] < min) min = args[i]; return min; } 이 방식에는 문제가 몇 개 있다...

Java 2023.03.24

[Effective Java] 아이템 52. 다중정의는 신중히 사용하라.

🎯 아이템 52. 다중정의는 신중히 사용하라. 컬렉션 분류기 - 오류! 이 프로그램은 무엇을 출력할까? public class CollectionClassifier { public static String classify(Set s) { return "집합"; } public static String classify(List lst) { return "리스트"; } public static String classify(Collection c) { return "그 외"; } public static void main(String[] args) { Collection[] collections = { new HashSet(), new ArrayList(), new HashMap().values() }; fo..

Java 2023.03.24
728x90
반응형