일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript 값
- Babel
- you don't know js
- ECMA2015
- 자바스크립트
- javascript type
- Spring
- effectivejava
- java
- JetBrains
- requestbody
- webpack
- Redis
- spring security
- Intellij
- spring batch #스프링 배치 #스프링 배치 중복 실행
- javascript
- javascript 기초
- ES6
- webstorm
- nodeJS
- 이펙티브 자바
- java.util.LinkedHashMap cannot be cast
- Effective Java
- CAS
- Spring Session
- javascript value
- 자바
- 이펙티브자바
- javascript native
- Today
- Total
귀찮지만 만들어보자
적시에 방어적 복사본을 만들라 자바로 작성한 클래스는 시스템의 다른 부분에서 무슨짓을 하든 그 불변식이 지켜진다.하지만 다른 클래스로부터의 침범을 아무런 노력없이 막을 수 있는 건 아니다.클라이언트가 불변식을 깨뜨리려고 혈안이 되어있다고 가정하고 방어적으로 프로그래밍해야한다 그니까 요점은 생성된 객체 내부의 값을 변조할 수 없게 코딩해야한다는 말이다. Date를 매개변수로 받는 경우를 생각해보면, Date는 가변이기 때문에 어렵지 않게 불변식을 깨뜨릴 수 있다.자바8에 추가된 Instant나 LocalDateTime 등을 사용하면 이런 점을 방지할 수 있다.얘네들은 불변이기 때문에 생각해보니 우리 프로젝트는 아직 Date를 사용한다또 다른 방법으로는 매개변수를 그대로 사용하지 않고, 생성자에서 값을 복사..
매개변수가 유효한지 검사하라 메서드 몸체가 시작되기 전에 매개변수를 검사해야한다. 사실은 이게 핵심이다.미리 확인한다면 즉각적이고 깔끔한 방식으로 예외를 던질 수 있다. 매개변수 검사를 제대로 하지 않았을때의 문제점- 메서드가 수행되는 중간에 모호한 예외를 던지며 실패할 수 있다. - 메서드는 잘 수행됐지만 잘못된 결과를 반환할 수 있다. - 메서드에 포함된 객체를 이상한 상태로 만들어놔서 미래의 알수 없는 시점에 메서드와 관련없는 오류를 발생 시킬수있다. 간략하게 정리를 하자면 메서드가 외부의 잘못된 변수로 인해 영향을 받지 않게 해야한다.가장 문제가 자주 발생하는건 null에 대한 처리인데..이 때문에 불변성을 보장해주는 언어가 각광받는게 아닐까 싶다. ex) kotlin, scala 자바7에 추가된..
스트림 병렬화는 주의해서 사용하라 자바5에서는 concurrent 라이브러리, executor 프레임워크자바7에서는 fork / join 그리고자바8에서는 parallel로 벙렬 프로그래밍을 지원한다. 사용하는 것은 간단하게 메서드를 호출하는 것으로 가능하지만,제약 사항이 많고 올바르게 사용하기에는 제약사항이 많다. parallel로 성능개선을 할 수 없는 경우- 데이터 소스가 Stream.iterate 인 경우 - 중간 연산에 limit를 사용하는 경우 - 스틀팀의 소스가 LinkedList와 같이 꼬리를 물고 있는 경우 일반적으로 parallel을 사용해서 성능개선을 할 수 있는 경우- 스트림의 소스가 ArrayList, HashMap, HashSet, ConcurrentHashMap, 배열, int..