본문 바로가기

분류 전체보기35

Modern Java In Action 정리 - 12 새로운 날짜와 시간 API Date, Calendar java 1.0에서는 날짜를 표기하기 위해서 Date 클래스를 만들었다. java.util.Date는 문제가 많다. 특정 시점을 날짜가 아닌 밀리초 단위로 표현한다. 기준이 1900년이다. 1일은 1로 표기하고 1월은 0으로 표기한다. mutable하다 Date date = new Date(117, 8, 21); 를 출력하면 Thu Sep 21 00:00:00 CET 2017 라고 나오는데 2017년이 117로 써야 하고 9월인데 8로 써야 하고 CET (중앙유럽시간대)를 쓰니까 뭐 이거 불편한게 이만저만이 아니다. 그래서 java 1.1에서 java.util.Calendar를 만들었다. 이것도 문제가 많다. 여전히 달은 0부터 시작했다 mutable하다 LocalDate ja.. 2020. 7. 4.
Modern Java In Action 정리 - 11 null 대신 Optional 클래스 I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language(ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null re.. 2020. 6. 27.
Modern Java In Action 정리 - 10장 람다를 이용한 도메인 전용 언어 도메인 전용 언어는 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어다. 기존 자바 언어로 비즈니스 로직을 설명하는 것은 읽는 사람으로 하여금 이해하기 어려운 과정을 만들 수 있다. 코드로 이어지는 의사소통을 좀 더 원활하게 하기 위해서 자바가 담을 수 있는 여러가지 기능들을 이용해서 초심자도 쉽게 이해할 수 있는 코드를 만들기 위한 노력을 다루고 있다. DSL의 장단점 Strengths Weaknesses 간결함 가독성 유지보수성 높은 수준의 추상화 집중 관심사 분리 DSL설계의 어려움 개발비용 추가 우회 계층 새로 배워야 하는 언어 호스팅 언어의 한계 최신 자바 API의 작은 DSL 최신 자바는 람다와 메소드 참조가 생기면서 DSL을 활용하기 더욱 좋은 환경이 되었다. Collections.sort.. 2020. 6. 22.
Modern Java In Action 정리 - 9장 리팩터링, 테스팅, 디버깅 코드 가독성 내가 쓴 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있게 만드는 것. 9장에서는 아래의 방법으로 기존의 코드를 리팩터링하고 있다. 익명클래스 -> 람다표현식 람다표현식 -> 메서드 참조 명령형 데이터 처리 -> 스트림 익명클래스를 람다 표현식으로 리팩터링하기 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Hello"); } }; Runnable runnable2 = () -> System.out.println("Hello"); 익명 클래스를 람다로 바꿀 때 주의할 점이 세가지 있다. 1. this라는 키워드가 쓰이고 있다면, 익명 클래스 내에서의 this는 익명 클래스 내에서의 .. 2020. 6. 13.