본문 바로가기

전체 글48

Java | 생성자에 매개변수가 많다면 빌더를 고려하라 (Effective Java 3/E - joshua bloch) 해당 글은 이펙티브 자바 (Effective Java 3/E - joshua bloch) 를 읽고 정리한 글입니다. 핵심생성자나 정적 팩터리가 처리해야 할 매개 변수가 많다면, 빌더 패턴을 선택하는 것이 낫다.매개변수 중 다수가 필수가 아니거나 같은 타입이라면 특히 더 그렇다. 빌더는 점층적 생성자보다 클라이언트 코드를 읽고 쓰기 훨씬 간결하고, 자바빈즈보다 훨씬 안전하다. 이유1. 점층적 생성자 패턴도 쓸 수 있지만, 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다.점층적 생성자 패턴은 생성자에 매개변수를 점차 늘려가며 필요한 생성자를 사용하는 것2. 자바빈즈 패턴 - 일관성이 깨지고, 불변으로 만들 수 없다.자바빈즈 패턴은 매개변수가 없는 생성자로 객체를 만들고 setter로 메서드.. 2024. 7. 4.
Java | 생성자 대신 정적 팩터리 메서드를 고려하라 (Effective Java 3/E - joshua bloch) 해당 글은 이펙티브 자바 (Effective Java 3/E - joshua bloch) 를 읽고 정리한 글입니다.핵심정적 팩터리 메서드와 public 생성자는 각자의 쓰임새가 있으니 상대적으로 장단점을 이해하고 사용할 것.그러나 정적 팩터리를 사용하는 게 유리한 경우가 더 많으므로 무작정 public 생성자를 제공하던 습관은 고치자. 이유1. 이름을 가질 수 있다.반환될 객체의 특성을 쉽게 묘사2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다.이로인해 불변 클래스(Immutable class)는 인스턴스를 미리 만들어 놓거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성 피함플라이웨이트 패턴(Flyweight pattern)과 비슷한 기법인스턴스 통제(Instance-co.. 2024. 7. 4.
프로젝트 | redis 적용 및 최적화 도전기 작성된 글의 프로젝트https://github.com/Fingoo-org/Fingoo GitHub - Fingoo-org/FingooContribute to Fingoo-org/Fingoo development by creating an account on GitHub.github.com 들어가기 전외부 API에서 주식, 금융 등의 관련 지표를 불러오는 로직이 프로젝트에 많은 부분을 차지하게 되었습니다. 이렇게 외부 API를 사용하게 되면 해당 기능을 직접 프로젝트에 구현하지 않아도 된다는 장점이 있지만, 그만큼 해당 API 서비스에 의존하게 되기 때문에 최소한으로 사용하고자 했습니다.그럼에도 사용하게 될 API 발생했고, 이번에는 기왕 사용할 API의 데이터를 Redis를 활용해서 캐싱함으로써, exp.. 2024. 6. 19.
프로젝트 | Artillery 부하 테스트 프로젝트에 부하 테스트 적용하기작성된 글의 프로젝트https://github.com/Fingoo-org/Fingoo GitHub - Fingoo-org/FingooContribute to Fingoo-org/Fingoo development by creating an account on GitHub.github.com 들어가기 전Fingoo라는 프로젝트의 기능적 개발이 거의 끝나가는 시점이 왔습니다..!(드디어..) 개발을 본격적으로 시작한지 약 4개월이 지났고, 기획 및 마케팅 전략 수립 단계까지하면 약 9개월의 시간이 지난 시점에서 만족스러운 결과물이 나오니 신기하기도 하고, 법인까지 세워서 실제 사용자들에게 피드백을 받게 되는 프로젝트이기 때문에 많이 떨리기도 합니다.핵심 기능 개발이 거의 끝나가는.. 2024. 5. 25.
NestJS 왜 쓰는걸까? (우아콘 새로운 백엔드 개발 표준 정리) 들어가기 전에새로 들어가는 프로젝트에서 생산성과 코드 품질을 중요한 기준으로 삼았다. 또한 프론트와 백엔드 상호간의 원할한 피드백이 필요한 상황이기에 하나의 통일된 JS기반의 언어로 프로젝트를 시작하는 것이 좋겠다는 의견이 있었다.  https://github.com/Fingoo-org/Fingoo GitHub - Fingoo-org/FingooContribute to Fingoo-org/Fingoo development by creating an account on GitHub.github.com  여태까지 JAVA 기반의 Spring 프레임워크만 사용했던 나는 꽤나 고민됐다. 하지만 위와 같은 이유와 함께 문득 새로운 기술이 필요한 시점이라면 왜 이 기술을 사용해야하는지, 어떤 장점이 있는지, 또한 .. 2023. 12. 26.
프로젝트 회고 | 나의 첫 프로젝트는.. IT 동아리 COW에서 진행했던 학기말 프로젝트에 대해 고민했던 점을 기록해보려합니다. 첫 프로젝트이자 로그인부터 배포까지 진행했던 프로젝트이기에 저에게 뜻깊은 이야기라고 생각합니다! 재밌게 봐주세요🥹 사용했던 기술 스택 우선 저는 이번 프로젝트에서 백엔드를 맡아서 프로젝트를 진행했습니다. 클라이언트는 React.js를 사용했고 아래는 제가 사용했던 기술 스택입니다. - Spring Boot 3.1.4 - Spring Data JPA - Spring Security - Spring OAuth2 - Java 17 - MySQL 8.0 - EC2 - CodeDeploy - Github Actions - S3 - RDS - Postman - Figma - Notion 기획 및 설계 저는 COW라는 IT 동아리.. 2023. 11. 29.