본문 바로가기

분류 전체보기

(99)
2022/02/10 TIL The Red : Stream FlatMap Stream이 중복되어 있을 때 사용한다. Stream flatMap(Function
2022/02/09 TIL The Red : Stream Map 매개변수로 Function 인터페이스를 받기 때문에 apply 라는 메소드에 할당한다. Stream map(Function
2022/02/08 TIL The Red : STREAM Filter 내부가 Predicate로 되어있기 때문에 내부적으로 boolean 값에 따라 처리한다. Stream filter(Predicate
2022/02/07 TIL The Red : STREAM Predicate 하나의 값을 입력받아 참과 거짓을 판단한다. 3개의 default 메소드와 2개의 static 메소드가 존재한다. (default 메소드 까지만 학습한다) [공식문서] @FunctionalInterface public interface Predicate { boolean test(T t); default Predicate and(Predicate
2022/02/06 TIL 인프런 JPA 기본편 값 타입 컬렉션 값 타입은 식별자가 없기 때문에 생명주기를 엔티티를 의존한다. 하지만 이렇게 되면 값을 수정할 때마다 존재하는 값을 전부 지우고 수정하는 데이터를 새로 만들게 돼서 성능이 떨어진다. 따라서 OneToMany로 사용하는 것이 좋고(값 타입을 엔티티로 승격), 만약 값 타입으로 사용해야 한다면 불변 객체로 사용하는 것이 좋다. 값 타입 만드는 법 @ElementCollection @ColloectionTable(name = "ADDRESS", joinColumns = @JoinColumn(name = "MEMBER_ID")) private List addressHistory = new ArrayList();
2022/02/05 TIL Thd Red : STREAM Supplier 인자는 받을 수 없고 값을 리턴하기만 한다. 공식문서 @FunctionalInterface public interface Supplier { T get(); }예제 1) @Test void test_supplier(){ Supplier mySupplier = () -> "hello supplier"; assertThat(mySupplier.get()).isEqualTo("hello supplier"); }mySupplier는 get()이라는 하나의 메서드만 가지고 있기 때문에 () -> "hello supplier"; 를 할당하면 get()에 할당이 되게 된다. 예제 2) @Test void test_supplier_with_method(){ Supplier..
2022/02/04 TIL (JAVA8) The RED : JAVA STREAM 2장, 3장 함수는 동사로, 객체는 명사로 이름을 짓는다. OOP를 하다 보면 명사로만 추상화를 하게 되는데 동사로 추상화하는 게 좋은 경우가 있다. 명령형 프로그래밍과 선언형 프로그래밍의 일처리는 다르다. 함수형 프로그래밍이 언제 필요한지 몰랐었는데 동사를 추상화할 떄 필요하단 것을 알게 되었다. 1급 시민의 조건 함수/메서드의 매개변수로 전달할 수 있는가 함수/메서드의 반환 값이 될 수 있는가 변수에 담을 수 있는가 객체는 1급 시민의 조건을 갖추고 있으므로 함수를 객체처럼 만든다면 1급 시민이 될 수 있다. JAVA8에서 함수형 프로그래밍을 지원하는 방법이기도 하다. Funcational Interface 어노테이션이다. 추상메서드를 1개 가지고 있어야 한다...
2022/02/03 TIL JPA 프로그밍 기본 편 : 값 타입과 불변 객체 임베디드 타입 같은 값 타입을 여러 엔티티에서 공유하면 side effect가 발생할 수 있다. 두 개의 엔티티에서 동일한 값 타입을 참조하게 되면, 하나의 엔티티에 해당하는 값 객체 값을 변경하면 나머지 하나의 객체에 영향을 미치게 된다. Address address = new Address("city", "address", "1000"); Member merber1 = new Memeber("name1", address); Member merber2 = new Memeber("name2", address); member1.getAddress().setCity("city1"); // member2의 city값도 같이 변경된다. 그 이유는 당연하게도 자바..
2022/02/02 TIL 클린 아키텍처 6장 : 함수형 프로그래밍 현명한 아키텍트라면 가능한 한 많은 처리를 불변 컴포넌트로 옮겨야 하고, 가변 컴포넌트에서는 가능한 한 많은 코드를 빼냐야 한다. 함수형 프로그래밍은 변후 할당에 부과되는 규율이다. 결국 함수형프로그래밍의 주요 관심사는 변수 할당이다. 1964년 앨런 튜링이 사용한 소프트웨어 규칙과 지금의 소프트웨어 규칙은 조금도 다르지않다. 순차, 분기, 반복, 참조로 구성된다. 그 이상도 이하도 아니다. IT산업이 급협하게 발전한것 같지만 우리가 작성하는 코드에 급격한 변화는 없다는 것이 흥미롭다. Thd Red : TDD 코드를 작성하는것 만큼 작업을 설계하는 것도 중요하다. 체크리스트, 사용자 스토리, 테스트 케이스는 명확한 이정표를 제공해준다. 결국 TDD를 잘하고 싶으..
클린코드 회고 동기 사전처럼 궁금한 내용이 있으면 클린 코드를 살펴보긴 했는데 전체적으로 어떤 내용이 있는지 정리하기 위해 처음부터 끝까지 읽게 되었습니다. 요약 및 기억하고 싶은 내용 저자가(로버트 C.마틴) 클린 코드를 통해 하고자 하는 말은 크게 2가지라고 생각한다. 읽기 쉬운 코드 작성하기 테스트 하기 쉬운 코드 작성하기 읽기 쉬운 코드 작성하기 읽기 쉬운 코드를 작성하는 이유는 인간의 뇌에 한계가 있기 때문이라고 생각한다. 극단적이 예로 가독성을 고려하지 않고 성능만 신경 쓴 상태에서 코드를 작성하게 되면 되면 아래와 같은 코드는 좋은 코드가 될 것이다. int n1; int n2;하지만 홀수와 짝수가 다른 개념들과 섞여 있다면 조금씩 헷갈리기 시작할 것이다. int n1; int n2; int h; // h..