[elegant]ch02_ ~ 2.6.4
2022. 6. 9. 01:24
책/엘레강트 오브젝트
가능하면 적게 캡슐화 객체는 함께 동작하는 객체들의 집합체 이기 때문에, 객체에는 캡슐화된 객체들이 있어야 한다 . 객체는 상태(내부의 객체)를 이용해 식별되어야 하는데, Java 에서는 껍질(==이나 Object 클래스의 기본적인 equals() 정의를 생각해보면 된다 ) 로 비교하고 있어 결함이 존재한다는 얘기를 하고 있다. 책에서 “상태로 객체를 식별" 한다는 것은 값객체에 대한 말인가? 엔티티와 값객체를 구분하면서 쓰여진 것인지 그 의도가 분명하지 않다는 생각이 들었다. 객체에 너무 많은 상태가 존재하는 것 보다는, 일부 상태를 캡슐화한 이루어져야 한다. 그 이유는 너무 많은 상태를 가진 객체는 인간의 인지적 한계로 이해하기 어렵기 때문이다. 상태를 객체들로 쪼개놓으면, 개별적인 객체들을 이해하기..
[elegant] 1. Birth 와 관련 자료 발표 영상
2022. 6. 5. 16:29
책/엘레강트 오브젝트
이 책은 객체가 살아있는 생명체인 것 처럼 표현한다. 객체가 태어나고 학습하고 취업하고 은퇴한다는.. 일종의 객체의 생명주기? 로 컨텐츠를 설명하고 있다. 그 중 첫 번째 챕터인 Birth 내용을 정리한다 +++(추가) 교육을 수강하며 ch01 과 관련하여 발표했던 자료가 있어 첨부한다 https://present.do/documents/62dd647c85df05656ca15627?page=0 객체의 가시성 객체의 가시성? 숫자 5 는 extra 라는 Cash 타입 객체 의 내부에 캡슐화 되어있다.반면 외부세계는, extra 객체가 어떻게 캡슐화 되어 있는가에 따라 extra 내부에 존재하는 5 를 직접적으로 볼 수도, 간접적으로 볼 수도 있을 것이다. if(price < 100){ Cash extra ..
ch02 : 테스트의 필요성
2022. 2. 20. 16:57
책/토비의스프링
단위 테스트 vs 통합 테스트 vs 인수 테스트 [스프링부트 (8)] SpringBoot Test(1) - Junit 설정 및 실행 기존에는 인프런 강의를 들으며 , 강사님께서 작성하시던 테스트코드 따라치기 경험밖에 없었다. 어쨋거나 user case를 테스트 해보기 위해 , 매번 서버를 실행하고, test를 위해 직접 db에서 기존 test를 위해 넣은 데이터를 삭제하거나, 현재 테스트를 위해서 직접 데이터를 넣는 과정이 반복되며 불편함을 느끼게 되었다. unit test.. 이것을 도입은 해봐야할텐데 unit test가 정확히 뭐지? Spring DATA JPA를 사용하는 중, unit test의 도입이 가능할까? 결국 서버를 run시켜야하는 거 아닐까? Mock이 뭐지 ? 순수 JAVA 테스트를 할..
DI , 왜 생성자 주입을 하라는 걸까?
2022. 2. 16. 20:27
책/토비의스프링
참조 토비의 스프링 vol1. DI DI의 등장 IoC 컨테이너라던 스프링. DI 라는 용어는 어쩌다가 나왔을까?? IoC 라는 용어는 “매우 폭넓게 적용되고 있는 용어” 이다. 스프링 고유의 것이 아니다. 객체 지향프로그래밍에서 IoC를 구현하는 기술에는 - service locator pattern을 사용 - DI를 사용 - contextualized lookup을 사용 - template method 디자인 패턴 사용 - 전략 디자인 패턴 사용 등등이 있다. 따라서 스프링이 제공하는 IoC 방식을 좀 더 명시적으로, 확실하게 짚어주기 위해 “ DI(의존관계주입)” 이라는 용어가 등장한다. (이게 위에서 말한 DI 다 ) 참고로, 주입이라는 용어를 사용했지만 “참조값”이 외부로부터 “전달” 되어오는 ..
02. 원칙과 패턴
2022. 2. 13. 14:24
책/토비의스프링
Reference 토비의스프링3.1(vol1) 책을 읽으며 정리 및 개인적 이해를 돕기 위한 추가적인 말들 객체지향 설계 원칙(SOLID) 객체지향의 특징을 잘 살리 수 있는 설계의 원칙” 을 말함. 원칙 → 절대적 기준 x → 가이드 라인 같은 것. 디자인 패턴이 좀 더, 특정한 상황의 문제에 대한 “ 구체적인 솔루션” 이다 객체지향 설계원칙은, “좀 더 일반적 상황에 적용가능”한 설계 기준. 디자인 패턴들에선, 객체지향 설계 원칙을 잘 지켜 만들어져 있겠다. 개방 폐쇄 원칙( OCP : Open Closed Pattern ) 클래스나 모듈은 “확장에는 열려” 있고, “변경에는 닫혀” 있어야 한다. 예를들어 , 앞서 만든 UserDao 는 이제, “DB 연결방법 등의 기능을 확장” 할 수 있으면서도, ..
관심사의 분리 ( ~1.3.3)
2022. 2. 9. 14:05
책/토비의스프링
현재 Java Bean이라고 부르는 것 일부 자바빈 규약 정도를 지키는 것을 말함. default 생성자 ( zero parameter consturctor) 를 갖고 있어야 한다 → 툴이나 프레임워크에서 reflection을 이용해 object를 생성하기 때문. property 는 setter나 getter를 이용해 access할 수 있을 것. ( 하지만 Entity의 경우 setter를 오픈하는 것은 좋지 않다. getter도 무조건은 좋지 않다 ) 객체지향 "기술 "은 어떤 것을 말하는 걸까? ( 객체지향적 개념 말고, 기술! ) ==> 변화에 효과적으로 대처할 수 있는 것. 변화에는 대비한다는게 무슨 말이지?? 변화의 폭을 최소한으로 줄여주는 것. ( 코드 여기저기서 변화가 일어난다면 변화의 폭이..
[effective java] Item34 : int const 대신 열거타입(enum 사용) + 그리고 State pattern
2022. 1. 22. 22:35
책/effectiveJava
Item34 : int constant대신 enum을 사용하라 JAVA에서는 두 가지 특별한 reference type을 제공하고 있다. class의 일종인 enum type interface의 일종인 annotation type 기존에는 어떠했나? 정수 열거패턴, int enum pattern 이라고 알려진 기법을 사용했다. named [ int constant ]의 그룹을 선언하여 사용했다. ( JAVA에서는 static final로 선언 ) public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int ORANGE_NAVEL = 0; public static final in..