본문 바로가기

TIL

(56)
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 의존성 정리 블로그에서 보기
2022/01/13 TIL 클린코드 7장 : 오류처리 Checked Exception은 OCP(Open Closed Principle)을 위반한다. 하위 메소드에서 Checked Exception이 발생하면 상위 메소드 모두에 예외 처리를 해야 하는데 이는 강한 의존성을 만들게 되기 때문이다. JPA에서 Runtime Exception(Unchecked Exception)을 상속받아 예외 처리를 하는데, 근거가 부족하다는 생각을 종종 했습니다. 의존성과 관련한 이슈가 있다는 것을 인지하고 사용하는 것이 좋을 것 같습니다. 특수 사례 패턴 예외 말고 기본값을 설정하여 리턴하는 패턴입니다. 클린코드 8장 : 경계 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다. 내가 작성한 코드가 아니라 이미 만들어진 코드를 테스트하는 것을 ..
2022/01/12 TIL 코드컴플리트2 34장 : 소프트웨어 장인정신에 대한 주제 좋은 설계는 오직 상위 계층에 집중하는 데 많은 시간을 보내고 하위 계층은 무시할 수 있도록 하는 것이다. 좋은 개발자가 되기 위해 저수준까지 공부해야 한다는 생각에는 변함이 없지만 이 탐구의 목표가 저수준을 이해함으로써 고수준에서의 관점이 깊어지기 위함이라는 것을 말하는 것 같다. AWS TIP EC2 t2.micro t3.micro 의 가격은 같다 JPA Native 쿼리 조심하기 JPA를 사용할 때 @Modifying 애노테이션과 @Query 애노테이션을 사용하면 네이티브 쿼리(SQL)를 사용해서 데이터 베이스에 저장, 수정, 삭제할 수 있다. 하지만 연관관계가 맺어있지 않은 칼럼에 연관관계를 추가했을 때 변경을 감지하지 못한다. 변경 전 L..
2022/01/11 TIL 코드 컴플리트2 33장 : 개발자의 성격 누구나 전날 너무 열심히 일해서 그다음 날을 완전히 날려버리거나 한 달 전에 너무 열심히 일해서 다음 달을 완전히 날려버린 경험이 있을 것이다. 지금보다 경력이 없었을 때, 이런 점을 통제하지 못해 힘들었던 경험이 많았다. 자기 객관화를 통해 어떻게 꾸준하게 성잘할 수 있을지 고민하는 것은 언제나 중요한 고민거리이다. 프로그래밍에 뛰어난 사람은 자신의 두뇌가 얼마나 작은지 깨달은 사람이다. 담당하는 도메인에 대한 지식이 늘어날수록 기억력에 의존하고 싶은 욕망이 점점 커지는데, 이런 부분은 경계해야 한다. 컴파일러 메시지를 이해하지 못하면서 이해하는 것처럼 행동하는 것도 또 다른 일반적인 맹점이다. TDD를 진행하다 보면 다양한 에러 메시지를 보게 되는데, 무의식적..
2022/01/10 TIL 코드 컴플리트2 31장 : 레이아웃과 스타일 코드를 보기 좋게 작성하는 것도 중요하지만, 코드의 구조를 보여주는 것이 더 중요하다. 제어 구조의 레이아웃은 가독성과 이해력에 영향을 미치기 때문에 우선시 된다. 컴퓨터가 이해할 수 있는 코드는 어떤 바보라도 작성할 수 있다. 훌륭한 개발자는 사람이 이해할 수 있는 코드를 작성한다. - 마틴 파울러 - 코드 작성규칙에 대해 고민할 때는 미적인 부분보다는 가독성과 이해력을 우선시해야 합니다. 코드 컴플리트2 32장 : 스스로를 설명하는 코드 문서화 부담의 상당 부분을 좋은 프로그래밍 스타일로 해결한다. 문사화에 들일 노력을 코드 작성에 들여라. 문서화의 시작은 가독성 좋은 코드 작성이다. 줄 끝 주셕은 피하라. 형식을 맞추기 어렵고 모호한 경우가 많다. 설명이..
2022/01/09 TIL 2022/01/09 TIL 2021 유스콘 회고 작성 보러가기 GoF의 디자인 패턴 1장 서론 디자인 패턴이란? 어떤 상황의 문제에 대한 해법 동일한 문제가 발생했을 때 같은 방법으로 해결할 수 있다면 그것이 디자인 패턴이라는 것을 강조한다. 하나의 패턴은 아래의 4가지 요소를 반드시 포함한다. 패턴이름 문제(사용시기와 그 배경) 해법 결과(적용해서 얻은 결과와 장단점) 앞으로 책을 볼 때 위의 4가지를 염두에 두고 보면 좋을 것 같다. 디자인 패턴의 분류 목적은 '생성', '구조', '행동' 으로 나누어 진다. 범위는 '클래스'와 '객체'로 나누어 진다. 앞으로 학습할 패턴이 어디에 속하는지 염두에 두고 보면 좋을 것 같다. 시그니..