이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라 ex 1) for 문으로 컬렉션 순회하는 예 for (Iterator i = c.iterator(); i.hasNext(); ) { Element e = i.next(); ... } ex 2) for 문으로 배열을 순회하는 예 int[] a = {0,1,2,3,4}; for (int i = 0; i < a.length; i++) { ... } 이렇게, for문을 사용하게 되면 반복자와 인덱스 변수가 필요하다. 이처럼 쓰이는 요소 종류가 늘어나면 오류가 생길 가능성이 넓어진다. 혹시라도 잘못된 변수를 사용했을 때 컴파일러가 잡아주리라는 보장도 없..
BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 57. 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지며 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 팁 가장 쉬운 방법은 ‘가장 처음 쓰일 때 선언하기’ 이다. 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어진다. 지역변수를 생각 없이 선언하다 보면 변수가 쓰이는 범위보다 너무 앞서 선언하거나, 다 쓴 뒤에도 여전히 살아 있게 될 수 있다. 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. try-catch 문은 이 규칙에서 예외다. 반복문에..
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 좋은 API를 개발하기 위해서는 해당 API에 대한 문서도 잘 작성되어야 한다. 기본적으로 API 문서는 사람이 직접 작성하므로 코드가 변경되면 매번 같이 수정해줘야 하는데, 자바에서는 Javadoc이라는 유틸리티가 이 작업을 도와준다. Javadoc Javadoc은 프로그래머가 자바독 문서를 올바르게 작성했는 지 확인하는 기능을 제공한다. 자바 7에서는 명렬줄에서 -Xdoclint 스위치를 켜주면 이 기능이 활성화되고, 자바 8부터는 기본으로 작동한다. 소스코드 파일에서 문서화 주석이라는 특수한 형태로 기술된 설명을 추려 API 문서로 변환해준다..
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 55. 옵셔널 반환은 신중히 하라 메서드가 특정 조건에서 값을 반환할 수 없을 때 처리하는 방법 ~ 자바 7 예외를 던지거나, (반환 타입이 객체 참조라면) null을 반환 예외는 진짜 예외적인 상황에서만 사용해야 하며 예외를 생성할 때는 스택 추적 전체를 캡처하므로 비용이 만만치 않다. null을 반환하면 이런 문제가 생기진 않지만, 별도의 null 처리 코드를 추가해야 한다. 자바 8 이후의 새로운 방법 : Optional Optional는 null 이 아닌 T 타입 참조를 하나 담거나, 혹은 아무것도 담지 않을 수 있다. 아무것도 담지 않은 Optional은 ‘비었다’ 라고 한다. 반대로 어떤 값을 ..
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라 ex 1) 컬렉션이 비어있다면 null을 반환하는 메서드 (따라하지 말 것) private final List cheesesInStock = ...; /** * @return 매장 안의 모든 치즈 목록을 반환한다. * 단, 재고가 하나도 없다면 null을 반환한다. */ public List getCheeses() { return cheesesInStock.isEmtpy() ? null : new ArrayList(cheesesInStock); } 이 코드처럼 null을 반환한다면, 클라이언트는 이 null 상황을 처리하는 코드를 추가로 작성해야 한다..
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 53. 가변인수는 신중히 사용하라 가변인수 메서드 명시한 타입의 인수를 0개 이상 받을 수 있다. 가변인수 메서드를 호출하면, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고 인수들을 이 배열에 저장하여 가변인수 메서드에 건네준다. ex 1) 입력받은 int 인수들의 합을 계산해주는 가변인수 메서드 static int sum(int... args) { int sum = 0; for (int arg : args) sum += arg; return sum; } ex 2) 인수가 1개 이상이어야하는 가변인수 메서드 (좋지 않은 예) static int min(int... args) { if (args.len..
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 52. 다중정의는 신중히 사용하라 다중정의 ex 1) 컬렉션의 종류를 출력하는 예 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(), n..
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 51. 메서드 시그니처를 신중히 설계하라 API 설계 요령 1. 메서드 이름을 신중히 짓자. 항상 표준 명명 규칙을 따라야한다. 2. 편의 메서드를 너무 많이 만들지 말자. 너무 많으면 익히고, 사용하고, 문서화하고, 테스트하고 ,유지보수 하기 어렵다. 확신이 서지 않으면 만들지 말자. 3. 매개변수 목록은 짧게 유지하자. 4개 이하가 좋다. 같은 타입의 매개변수 여러 개가 연달아 나오는 경우가 특히 좋지 않다. → 실수로 순서를 바꿔 입력하는 경우, 그대로 컴파일되고 실행되어 의도와 다른 동작이 일어남 과하게 긴 매개변수 목록을 줄이는 방법 여러 메서드로 쪼갠다. 쪼개진 메서드 각각은 원래 매개변수 목록..