일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ECMA2015
- 이펙티브자바
- effectivejava
- 이펙티브 자바
- Babel
- webpack
- ES6
- Effective Java
- CAS
- webstorm
- 자바
- Redis
- 자바스크립트
- spring security
- javascript native
- requestbody
- javascript 기초
- JetBrains
- java
- Intellij
- Spring
- javascript type
- javascript value
- java.util.LinkedHashMap cannot be cast
- javascript
- javascript 값
- Spring Session
- you don't know js
- spring batch #스프링 배치 #스프링 배치 중복 실행
- nodeJS
- Today
- Total
목록이펙티브자바 (5)
귀찮지만 만들어보자
스트림에서는 부작용 없는 함수를 사용하라 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성 하는 부분이다.이전 단계의 결과를 받아서 처리하는 과정에서(method chaining, fluent api) 원활하게 진행되려면,스트림 연산에서 건내지는 함수 객체는 모두 부작용이 없어야 한다.스트림 api를 진행하면서 발생하는 예외에 대한 처리가 까다로운 편이니,연산을 진행하기전에 예외에 대한 처리 또한 미리 하는 것이 좋다. Map freq = new HashMap(); try (Stream words = new Scanner(file).tokens()) { words.forEach(word -> { freq.merge(word.toLowerCase(), 1L, Long::sum); }); }해당 예제에..
스트림은 주의해서 사용하라 스트림은 다량의 데이터 처리 작업을 돕고자 자바8에 추가되었다.이 API에서 제공하는 추상 개념중 핵심은 두 가지다.- 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻한다 - 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념이다 스트림의 파이프라인은 소스 스트림으로 시작해서 종단 연산으로 끝난다. 그 사이에 하나 이상의 중간 연산이 있을 수 있다. 여기서 중간 연산은 스트림이 어떠한 형태로 변환한다. 최종적인 연산의 결과는 종단 연산에서 처리하게 된다.중간 연산이 여러개 존재할 경우에 종단연산에서 지연 평가된다. 사실은 이게 핵심이다! 잘 기억해두자 스트림 API는 메서드 연쇄를 지원하는 플루언트 API이다. 그니까 이어 붙이는게 가능하다.위에서 굵은 글씨..
표준 함수형 인터페이스를 사용하라 필요한 용도에 맞는 게 있다면, 직접적인 구현은 지양하는 것이 좋다.기본적으로 제공되는 표준 함수형 인터페이스 43개나 된다.그러니까 어지간한 경우에는 기본적으로 제공되는 함수형 인터페이스로 커버가 가능하다. 표준 함수형 인터페이스 참조 링크 : https://blog.hanumoka.net/2018/11/24/java-20181124-java-lambda2/ 표준 함수형 인터페이스를 사용해야 하는 이유(필수는 아니고 권장)- api를 다뤄야하는 개념의 수가 줄어들어 더 익히기 쉬워진다 - 표준 함수형 인터페이스는 유용한 디폴트 메서드를 많이 제공하기 때문에, 다른 코드와 상호 운용성도 좋아질 것이다 유의사항 1. 표준 함수형 인터페이스를 사용할 때 박싱된 기본 타입을 ..
람다보다는 메서드 참조(method reference)를 사용하라 일반적으로 사용하는 람다보다 더 간결하게 만드는 방법이다 - 예시map.merge(key, 1, (count, inc) -> count + incr); map.merge(key, 1, Integer::sum); 이런식으로 더욱 간결하게 사용할 수 있다. 인텔리제이에서 다 만들어주더라 다른 IDE도 되겠지..? 하지만 무조건적으로 간결해지는 것은 아니다.- 예시service.execute(GoshThisClassNameIsHumongous::action); service.execute(() -> action()); 이럴 경우에는 람다보다 메서드 참조가 더욱 알아먹기 어렵다.. 그러니까 적절하게 선택해서 사용하자. 람다로도는 불가능하지만 메서..
익명 클래스보다 람다를 사용하라 - 자바8에 와서 추상 메서드 하나짜리 인터페이스는 인스턴스를 람다식을 이용해서 짧게 만들수 있게 됐다.이를 이용하면 기존보다 간결하고 읽기 좋은 코드를 만들 수 있다. - 익명 클래스를 사용한 코드 Collections.sort(words, new Comparator() { public int compare(String s1, String s2) { return Integer.compare(s1.length(), s2.length()); } }); - 람다식을 이용한 코드 Collections.sort(words, (s1, s2) -> Integer.compare(s1.length(), s2.length()); 확실히 더 간결하고 읽기 좋은 코드를 만들 수 있다. * 타..