분류 전체보기 (99) 썸네일형 리스트형 2022/01/23 TIL The RED : TDD Object-Oriendted의 핵심은? 캡슐화, 상속, 추상화, 다형성이 정말 핵심인지 고민해봐야 한다. 많은 프로그래밍 패러다임은 대부분 추상화를 지원한다. Alan Kay는 아래와 같은 말을 했다.OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. 이 문장은 다형성이라는 단어로 표현될 수 있지 않을까?라는 고민을 해보면 좋다. 다형성은 late-binding이 지원되어야 한다. 개인적인 의견 TDD강의지만 객체지향에 대한 얘기가 많이 나오다 보니 떠오른 생각이 있었다. 객체지향, TDD와 같은.. 2022/01/22 TIL GoF의 디자인 패턴 3장 : 추상 팩토리 추상 팩토리란?추상 팩토리란? 서로 연관성이 있거나 독립적인 여러 객체의 군을 생성하는 디자인 패턴 장점 : 동일한 제품군에서는 쉽게 대체할 수 있다. 제품 사이의 일관성을 유지할 수 있다. 단점 : 제품군이 다르다면 추상 팩토리로 해결하기 힘들다. 추상 팩토리를 사용하면 AbstractFactory, ConccreteFactory, AbstractProduct, ConcreteProduct를 통해 생성하게 되면 제품별로 일관성을 유지하며 차이점을 만들 수 있는 점이 인상적이었습니다. Spring Runner 특정 환경과 기술에 종속적이지 않다는 것은 엔터프라이즈 기술(스프링이 제공하는 기술)을 사용하지 않는다는 게 아니라 POJO가 세부 기술에 직접 노출되지 .. 2022/01/21 TIL Spring Runner 모듈화란? 전체적은 구조를 표현하기 위해 관련된 클래스의 집합을 하나의 논리적인 단위로 묶는 구성 요소 (Java에서는 Package) 공식문서에서 Package를 나누는 기준에 대해 알게 되어 좋았다. 수직적 관심사 요구사항을 효과적으로 해결하는 것이 최우선 목표 수평적 관심사 재사용성이 최우선 목표이다. 두 개의 관심사가 섞이면 안 된다. 관심사의 분류에 따라 최우선 목표가 다르다는 것을 알게 되었습니다. 2022/01/20 TIL Spring RequestDto, ResponseDto RequestDto (RequestBody) GET의 경우 getter, setter, 기본 생성자가 필요하다. POST의 경우 getter, 기본 생성자만 필요하다. GET의 경우 WebDataBinder를 사용하는데, Java Bean방식을 사용해서 setter가 필요하다. POST의 경우 Jackson2HttpMessageConverter의 ObjectMapper를 사용하고 이는 setter가 필요하지 않다. ResponseDto (ResponseBody) getter만 존재하면 된다. 참고 : https://jojoldu.tistory.com/407 SpringRunner 부수효과 : 함수가 결과값 이외에 다른 상태를 변경시킬 때 부수효과가 .. 2022/01/19 TIL GoF의 디자인패턴 2장 가교패턴 서로 독립적으로 확장되지만 함께 동작해야 하는 개념들을 별도의 클래스 계층으로 분리하는 것이 목적이다. 논리적 개념(추상 클래스)과 물리적 개념(구현 클래스)으로 설명을 한다. 추상 팩토리 패턴의 적용이 힘들 떄 사용하는 것이 좋은 것 같다. 인터페이스나 추상클래스의 필요성에대해 알게되었습니다. 2022/01/18 TIL Spring Runner 아래의 번역은 정확하지 않을 수 있습니다. @Qualifier 공식문서에 아래와 같이 설명이 되어 있다. This annotation may be used on a field or parameter as a qualifier for candidate beans when autowiring. It may also be used to annotate other custom annotations that can then in turn be used as qualifiers. 이 어노테이션은 후보 빈들을(주입받을 수 있는 빈들) 주입받을 때 필드나 매개변수에서 한정자로 사용된다. 다른 사용자 정의 어노테이션에 표시하기 위해 사용될 수도 있으며, 이는 차례로 한정자가 될 수 있습니다. 사.. 2022/01/17 TIL GoF의 디자인 패턴 2장 Lexi 라는 문서편집기를 설계하는 사례 연구를 소개합니다. 하나의 편집기에 어떤 디자인 패턴이 적용되어 문제를 해결했는지 알아보는 챕터입니다. 재귀적 합성 : 계층적으로 구조화된 정보를 보여주는 가장 일반적인 방법 객체화를 하게되면 재귀적 합성에 용이하다고 생각한다. 복합체 패턴 : 객체지향 관점에서 재귀적 합성을 표현하는 패턴이다. Lexi라는 문서편집기는 복합체 패턴으로 구성되어 있다는 것을 알 수 있다. 전략 패턴 : '알고리즘을 객체로 캡슐화하는 것' 이 패턴의 의도입니다. 전략과 동작 환경에 대한 인터페이스를 충분히 일반화해야 한다. 전략 패턴을 사용하게 되면 중복적인 코드가 줄어들고, 세부사항 별로 클래스를 나누어 변화에도 대응할 수 있다는 생각이 들.. 2022/01/16 TIL 클린 코드 11장 : 시스템 초기화 지연, 계산 지연 문제점 MyServiceImpl 객체를 사용하지 않더라도 의존성을 해결하지 않으면 컴파일이 안된다. 테스트할 때 MOCK 객체를 할당해야 한다. SRP를 위반한다. public Service getService(){ if (service == null){ service = new MyServiceImpl(...); } return service; }초기화 지연 코드를 봤을 때 직감적으로 안 좋은 코드임을 알 수 있었다. 이번 기회에 근거를 알게 되어 좋았다. 의존성 주입 제어 역전 기법을 의존성 관리에 적용한 메커니즘 사용과 제작을 분히라는 강력한 메커니즘 하나가 의존성 주입이다. 스프링이 의존성 주입을 하려는 이유에대해 알게 되었다. 클린 코드 12.. # 2022/01/15 TIL 클린 코드 9장 : 단위 테스트 이중 표준의 본질이란? 상황에 따라 좋은 코드는 다르다. 운영 환경에서는 메모리나 CPU 효율을 고려하는 것이 좋은 코드겠지만, 테스트 환경에서는 고려할 필요 없이 테스트하기 쉬운 코드가 좋은 코드이다. 테스트 코드를 작성하면 최대한 운영코드와 비슷하게 작성하려고 했었는데, 그럴 필요가 없다는 것을 알게 되었다. 테스트 코드의 목적을 우선적으로 고려하는 것이 더 중요하다. 깨끗한 테스트의 다섯 가지 규칙 : F.I.R.S.T Fast, Independent, Repeatable, Self-Validating, Timely 테스트와 관련해서 의사소통할 때 대화를 시작할 수 있는 규칙들인 것 같다. 클린코드 10장 : 클래스 단일 책임원칙 : SRP(Single Respons.. 2022/01/14 TIL 클린 코드 9장 : 단위 테스트 테스트 코드는 실제 코드 못지않게 중요하다. 실제 코드 못지않게 깨끗하게 짜야한다. 실무에서 테스트 코드의 필요성을 간과하기 쉽습니다. 실제로 서비스의 품질이 좋아지는 것을 느끼는 것이 중요한 것 같습니다. BUILD-OPERATE-CHEKC 패턴이 테스트 구조에 적합합니다. GIVEN-WHEN-THEN, ARRANGE-ACT-ASSERT 처럼 준비-실행-검증으로 과정을 나누는 패턴이다. Spring 생태계의 Graphql 의존성 정리 블로그에서 보기 이전 1 2 3 4 5 6 7 8 ··· 10 다음