본문 바로가기

📚 전체글172

객체 생성할 때 '생성자' 대신 '정적 팩터리 메서드'를 써볼까? 🏭 *이 글은 책 '이펙티브 자바 3판 Item 1'과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 주제 객체 생성 : 인스턴스 생성 방법은 두 가지가 있다 하나는 전통적인 public 생성자 방법과 또 다른 하나는 정적 팩터리 메서드(static factory method) 방법이다. 예제 // 두 가지 인스턴스 생성 방법 public class Book { private String title; private String author; // 1. public 생성자 public Book(String title) { this.title = title; } // 2. 정적 팩터리 메서드 public static Book createBookWithTitle(String .. 2022. 1. 15.
디스코드 채팅채널에 Github 저장소 알림 봇 만들기 📩 1. 디스코드에서 WebHook 생성하고 URL 복사 2. Github - 특정 repo(저장소)에 들어가 디스코드에서 생성한 WebHook 입력 3. 알람 범위 설정 끝 1. 디스코드에서 WebHook 생성하고 URL 복사 2. Github - 특정 repo(저장소)에 들어가 디스코드에서 생성한 WebHook 입력 알람받고 싶은 저장소에 들어가서 ✅ Content type은 application/json 으로 설정 3. 알람 범위 설정 ✅ 상위 사진의 Which events would you like to trigger this webhook? 에서 자신이 알림 받고 싶은 것으로 커스텀 만약 이슈와 PR에 대해서만 알람을 받고 싶으면 아래처럼 하고 Add webhook 클릭 끝 깃허브에서 웹훅 설정 후.. 2022. 1. 14.
자바 객체의 메모리 크기는 얼마일까? (OOPs, Java Object Header, JOL 사용하기) 🤖 문득 이런 생각이 들었다. 내가 구현한 클래스의 메모리 총크기는 얼마일까? 흠......? * 이 글은 책 소프트웨어의 품격 2장과 하단 reference를 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 목차 0. 들어가며 1. 참조의 기본 크기 2. 객체 헤더 3. 패딩 4. 예제 계산해보기 5. JOL(Java Object Layout)를 인텔리 제이에서 편하게 (플러그인 소개) 0. 들어가며 자바의 자료형(type)은 크게 두 가지 PrimitiveType(기본타입)과 ReferenceType(레퍼런스 타입)이 있다. 보통 기본 타입의 크기는 고정되어 있어 메모리 크기 계산이 비교적 쉽지만, 레퍼런스 타입, 객체에 대한 메모리 크기 계산은 쉽지 않다. 그 이유는 객체의 정확한 크기를 .. 2022. 1. 14.
[일일 회고] 22.01.13.목 - 초보의 OOP 설계와 구현기(다형성과 추상화, 정적 팩터리 메서드 적용) 📚 개발 생각 오늘은 특정 주제에 대한 콘솔 프로젝트를 했다. 프로그램 실행부터 사용자 입, 출력과 데이터, 핵심 로직에 대한 요구사항이 있었다. 이를 절차 지향적으로 구현하는 것이 아니라 직접 OOP로 설계하고 구현하는 것이다. 예전에 C로 개발한 습관이 남아있어서 항상 어떤 문제를 볼 때 데이터를 중앙에 꺼내 쓰는 방식으로 개발했다. 이를 탈피하고자 특정 객체 안에 데이터와 프로시저로 묶어 정말 OOP 패러다임을 머릿속에 넣고 몸으로 익히고 싶었다. 사실 이전에 '객체지향의 사실과 오해 책'도 읽고 OOP 적용을 하려 했지만 역시나 어려웠다. 오늘의 회고는 프로젝트에서 겪었던 고민과 의문점을 남긴다. OOP ..ing ✅ 설계를 고민하고 구현하다 보니 다형성과 추상화가 된다고? 주어진 문제를 설계, .. 2022. 1. 13.
[일일 회고] 22.01.11.화 - 타인의 코드를 본다는 것 📚TIL 타인의 코드를 본다는 것 오늘은 어제 구현했던 자료구조를 가지고 팀원들과 각자 구현한 내용을 비교하며 리뷰했다. 타인의 코드를 본다는 것은 타인의 사고 과정뿐만 아니라 기술적 차이까지 살펴볼 수 있었다. 어제도 말했지만 어제 구현한 과제는 테스트에 집중하다 보니 이도 저도 아닌 코드가 되어버렸는데, 오늘 팀원들의 코드를 보며 객체지향적이고, 클린 코드, 코드 설계 관점까지 살펴볼 수 있었다. ✅ 인터페이스를 활용한 추상화, 제네릭 사용 내 코드의 문제는 링크드 리스트를 구현하는 데 도메인에 의존되어 있었다. 그러다 보니 링크드 리스트 기능뿐만 아니라 특정 도메인의 로직 (출력 문구, 삭제 등)이 코드 안에 들어있어 자료 구조를 재활용할 수 없었다. 하지만 팀원의 코드를 보니 LinkedList의.. 2022. 1. 11.