일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Stack
- Adv. recursive function
- 간단한 완전탐색
- 이진탐색
- parametric search
- 동적계획법
- 힙
- 내돈후기
- 깊이우선탐색
- Sort
- dfs
- Divide and Conquer
- 스택
- hint
- 완전탐색
- 매개 변수 탐색
- Advanced Sort
- 선형자료구조
- 고급정렬
- heap
- 알고리즘잡스
- 개념
- 우선순위 큐
- 큐
- Queue
- 정렬
- Simple Brute-Force Algorithm
- 기본자료구조
- basic data-structure
- binary search
- Today
- Total
루시와 프로그래밍 이야기
보호되어 있는 글입니다.
ITEM73. 추상화 수준에 맞는 예외를 던지라 수행하려는 일과 관련 없어 보이는 예외의 문제 -> 메서드가 저수준 예외를 처리하지 않고 바깥으로 전파해버릴 때 종종 일어남 프로그래머를 당황시킴 내부 구현 방식을 드러내어 윗 레벨 API를 오염시킴 릴리스에서 구현방식을 바꾸면 다른 예외가 튀어나와 기존 클라이언트 프로그램을 깨지게 할 수도 있음 해결방법 : 예외번역(Exception translation) - 상위 계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔 던져야 함 try{ ... } catch(LowerLevelException e){ // 추상화 수준에 맞춘다 throw new HigherLevelException(...); } //AbstractSequentialList..

이번 장에서는 자바 언어의 핵심 요소에 집중한다. 지역변수 제어구조 라이브러리 데이터타입 언어 경게를 넘나드는 기능인 리플렉션과 네이티브 메서드 ITEM57. 지역변수의 범위를 최소화하라 와 취지가 비슷하다 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. *지역변수를 코드 블록의 첫머리에 선언하는 경우가 많고, 습관처럼 따르지만 (C등에서) 자바에서는 어디서든 선언가능 (C도 가능하게 변하긴함) 지역변수를 최소화하는 방법 지역변수를 줄이는 가장 강력한 기법, "사용하기 직전에 선언하기" 지역변수를 사용하면 가독성도 떨어지고, 블록이 끝나고 살아있어 잘못 사용하여 끔찍한 결과를 초래할 수 있음 거의 모든 지역변수는 선언과 동시에 초기화 해야한다. 초기화에 ..

자바가 람다를 지원하면서 API를 작성하는 모범 사례도 바뀌었다. 대표적으로 상위 클래스의 기본 메서드를 재정의해 원하는 동작을 구현하는 템플릿 메서드 패턴을 예로 들 수 있다. 모던 자바에서는 템플릿 메서드 패턴 대신 함수 객체를 받는 정적 팩터리나 생성자를 제공하는 방식을 해법으로 제시하고 있다. 이 말은 함수 객체를 매개변수로 받는 생성자와 메서드를 더 많이 만들어야 한다는 뜻이다. 이 경우에는 함수형 매개변수 타입을 올바르게 선택해야 한다. 이미 자바 표준 라이브러리에는 다양한 용도의 표준 함수형 인터페이스를 제공하고 있다. 따라서 용도에 맞는 게 있다면, 직접 구현하기보다는 표준 함수형 인터페이스를 활용하자. 필요한 용도에 맞는게 있다면, 직접 구현하지 말고 표준 함수형 인터페이스를 활용하라. ..

https://jjingho.tistory.com/92 람다는 익명 클래스보다 간결하다는 장점이 있다. 그런데 함수 객체를 람다보다 더 간결하게 만드는 방법이 있다. 바로 메서드 참조(Method Reference)다. **https://countryxide.tistory.com/127 **https://developer-cheol.tistory.com/62 메서드 참조의 장점 메서드 참조는 람다의 거추장스러운 코드를 명확하고 간결하게 만들어준다. 다음 예제는 Map에 Key가 있다면 기존 매핑 값을 증가시키는 코드다. //람다 map.merge(key,1,(count,incr)-> count + incr); count와 incr는 크게 하는 일 없이 공간을 차지한다. 이를 메서드 참조로 개선하면 똑같은..

https://blog.insightbook.co.kr/2018/10/24/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%EC%9E%90%EB%B0%94-3%ED%8C%90effective-java-3-e/ 3판에서 볼 수 있는 새로운 내용 Java7 이후의 새로운 내용을 다루는 것뿐 아니라 함수형 프로그래밍 요소도 자세히 알아봅니다. 람다와 스트림에 집중한 7장을 포함하여 새로운 아이템도 많이 추가되었습니다. 람다에도 맵핵 시전!! 자바 7, 8, 9 신기능 반영 – 함수형 인터페이스, 람다식, 메서드 참조, 스트림 – 인터페이스의 디폴트 메서드와 정적 메서드 – 제네릭 타입에서의 다이아몬드 연산자를 포함한 타입 추론 – @SafeVarargs 애너테이션 – try-with-res..