본문 바로가기

upcurve631

[독서 기록] 모던 자바 인 액션 11장 null 대신 Optional 클래스 11장 null 대신 Optional 클래스 보수적인 null 처리법 public String getCarInsuranceName(Person person) { if (person != null) { Car car = person.getCar(); if (car !=null) { Insurance insurance = car.getInsurance(); if (insurance !=null) { return insurance.getName(); } } } } returrn "Unknown"; } - 365p null 때문에 발생하는 문제 - 에러의 근원이다 - 코드를 어지럽힌다 - 아무 의미가 없다 - 자바 철학에 위배된다 - 형식 시스템에 구멍을 만든다 - 367p 값이 있으면 Optional 클래스는.. 2023. 1. 11.
Java도 함수형 프로그래밍을 지향해야 하는 이유 함수형 프로그래밍 * 함수형 프로그래밍의 특징은 함수를 일급 시티즌으로 대우한다는 것이다 * stream에서 for each로 element를 돌면서 데이터를 보내는 것이 아니라 함수, 즉 action을 보낸다 * function을 sending 한다 ! /** * 기존의 for문을 이용한 sum을 구할 때와는 달리 * local variable이나 mutations, loop 등을 신경쓸 필요 없다 * Fp는 그저 명령할 뿐이다 * * 또한 명령을 수행함에 있어 구체적인 방법을 정하지 않는다 * just saying what to do and not how to do */ List numbers = List.of(4, 5, 6, 7, 8, 3, 15); int sum = numbers.stream() .. 2023. 1. 10.
[독서 기록] 모던 자바 인 액션 10장 람다를 이용한 도메인 전용 언어 모던 자바 인 액션 10장 람다를 이용한 도메인 전용 언어 Collections.sort(persons, comparing(Person::getAge).thenComparing(Person::getName)); 나이 정렬 + 이름 알파벳 정렬 - 332p 한개의 메서드 호출 체인으로 거래 주문 정의하기 Order order = forCustomer("BigBank") .buy(80) .stock("IBM") .on("NYSE") .at(125.00) .sell(50) .stock("GOOGLE") .on("NASDAQ") .at(375.00) .end(); 메서드 체인 만들기 public class MethodChainingOrderBuilder { public final Order order = new.. 2023. 1. 10.
[독서 기록] 모던 자바 인 액션 9장 리팩터링, 테스팅, 디버깅 모던 자바 인 액션 9장 리팩터링, 테스팅, 디버깅 일반적으로 코드 가독성이 좋다는 것은 '어떤 코드를 다른 사람도 쉽게 이해할 수 있음'을 의미한다. 즉 코드 가독성을 개선한다는 것은 우리가 구현한 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있게 만드는 것을 의미한다. - 294p 익명 클래스를 람다 표현식으로 리팩터링 Runnable r1 = new Runnable() { public void run(){ System.out.println("hello"); } } Runnable r2 = () -> System.out.println("hello"); - 295p 람다 표현식을 메서드 참조로 리팩터링 Map dishesByCaloricLevel = menu.stream() .collect( gro.. 2023. 1. 10.
kosta 클라우드 네이티브 애플리케이션 개발 과정 day 16 kosta 클라우드 네이티브 애플리케이션 개발 과정 day 16 calendar api를 사용해서 날짜를 계산해보는 간단한 예시 package kosta.basic.day015.api.calender; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class PracticeCalender2 { public static void main(String[] args) { // 입사일 입력 => 몇년 몇개월 String pattern = "yyyy/MM/dd"; DateFormat dateForma.. 2023. 1. 10.