Java/Effective Java
-
[Effective Java] Item 58. 전통적인 for 문보다는 for-each 문을 사용하라Java/Effective Java 2020. 10. 20. 23:21
for 문으로 컬렉션 순회하기 for (Iterator i = c.iterator(); i.hasNext(); ) { Element e = i.next(); //Something job.. } for 문으로 배열 순회하기 for (int i = 0; i < a.length; i++) { //Something job... } 위에 작성된 for 문들은 반복자와 인덱스 변수들로 인해 코드를 지저분하게 만듭니다. 잘못된 변수를 사용 했을 때 컴파일러가 잡아주리라는 보장도 없습니다. 이 문제들은 for-each 문을 사용하면 간단하게 해결됩니다. 컬렉션과 배열을 순회하는 for-each 문 for (Element e : elements) { //Something job... } 컬렉션을 중첩해 순회하는 경우 f..
-
[Effective Java] Item 57. 지역변수의 범위를 최소화하라Java/Effective Java 2020. 10. 18. 14:50
이번 아이템은 Item 15에서 다뤘던 "클래스와 멤버의 접근 권한을 최소화하라"와 취지가 비슷합니다. 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아집니다. 지역변수의 범위를 줄이는 방법 가장 처음 쓰일 때 선언하기 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어집니다. 변수를 실제로 사용하는 시점엔 타입과 초깃값이 기억나지 않을 수도 있습니다. 지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때까지이므로, 실제 사용하는 블록 바깥에 선언된 변수는 그 블록이 끝난 뒤에도 여전히 살아 있게 됩니다. 실수로 의도한 범위 앞 혹은 뒤에서 그 변수를 사용하면 끔찍한 결과를 초래할 수 있습니다. 거의 모든 지역변수는 선언과 ..
-
[Effective Java] Item 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라Java/Effective Java 2020. 10. 15. 23:48
private final List cheesesInStock = ...; public List getCheese() { return cheesesInStock.isEmpty() ? null : new ArrayList(cheesesInStock); } 위 코드는 리스트가 비어있다면 null을 반환하는 코드입니다. 이러한 코드를 사용하는 클라이언트는 이 null 상황을 처리하는 코드를 추가로 작성해야만 합니다. List cheeses = shop.getCheeses(); if (cheeses != null && cheeses.contains(Cheese.STILTON)) System.out.println("Great"); 컬렉션이나 배열 같은 컨테이너가 비었을 때 null을 반환하는 메서드를 사용한다면 항..
-
[Effective Java] Item 53. 가변인수는 신중히 사용하라Java/Effective Java 2020. 10. 14. 23:57
가변인수 메서드는 명시한 타입의 인수를 0개 이상 받을 수 있습니다. 가변인수 메서드를 호출하면, 인수의 개수와 길이가 같은 배열을 만들고 인수들을 배열에 저장하여 가변인수 메서드에 건네줍니다. 가변인수를 통해 인수들의 합을 반환하는 메서드 static int sum(int... args) { int sum = 0; for (int arg : args) sum += arg; return sum; } 인수가 1개 이상이어야 하는 경우 아래의 코드는 가변인수를 받아서 최솟값을 찾는 메서드입니다. static int min(int... args) { if (args.length == 0) throw new IllegalArgumentException("인수가 1개 이상 필요합니다."); int min = ar..