싱글턴 객체를 만드는 방법 1) 생성자를 private으로 만들고 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버 하나를 마련해둔다. // 코드 3-1 public static final 필드 방식의 싱글턴 (23쪽) public class Elvis { public static final Elvis INSTANCE...
[이펙티브자바] 아이템2-생성자에 매개변수가 많다면 빌더를 고려하라
정적 팩터리와 생성자에는 똑같은 제약이 하나있다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 첫번째 대안) 점층적 생성자 패턴 필수 매개변수와 선택 매개변수의 적절한 조합으로 생성자를 늘려가는 방식 ex) 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개...
[이펙티브자바] 아이템1-생성자 대신 정적 팩터리 메서드를 고려하라
정적 팩터리 메서드란? 단순하게 클래스의 인스턴스를 반환하는 단순한 정적 메서드를 뜻한다. 예를 들면, 다음과 같은 코드와 같이 단순하게 인자를 받아 해당 클래스의 인스턴스를 반환하는 메서드를 뜻한다. public static Product from(String name) { return new Product(name); } ...
[학습할래] Dynamic Import
일반적으로 브라우저에 접속하면 해당 브라우저에서 필요한 html 파일을 네트워크를 통해 가져오고, 해당 html 파일에 명시된 자바스크립트 파일, 스타일 시트 파일들을 함께 가져오게 됩니다. 여기서!!! 하나의 애플리케이션의 번들(javascript 파일) 사이즈가 엄청 커지게 되면 초기에 웹 페이지 로딩 속도가 엄청 느려지게 될 것입니다. 당연...
[React] dynamic import
하나의 애플리케이션의 번들 사이즈가 엄청 커지게 되면 초기에 웹 페이지 로딩 속도가 엄청 느려질 것이다. 당연히 실무에서는 애플리케이션의 사이즈가 점점 커져갈 수 밖에 없고 당연히 부딪히게 될 수 밖에 없는 문제가 될 것이다. 운 좋게도 팀원을 통해 코드 분할(code spliting)에 대해 먼저 접하게 되었는데, 맨 처음 들었을땐 이해가 부족하여...
[학습할래] Webpack
webpack을 주제로 선정하게 된 이유는 프론트 개발 환경에서 가장 중추적인 역할을 하고 있기 때문입니다. 그러다보니 프론트엔드 개발자라면 한 번쯤은 깊게 학습해볼 필요가 있는 부분이라 생각하고 스스로 학습 내용을 정리할겸 주제로 선정하게 되었습니다. 1. 웹팩이란 무엇이고 왜 사용하는가? 웹팩에 대해 학습해본 사람이라면 한 번쯤 위와 같은...
모노레포
모노레포란? 모노레포(MonoRepo) 는 Monolithic Repositories 의 약자로, 하나의 레포지토리에서 여러 개의 프로젝트가 구성된 것을 의미한다. 보통 하나의 레포지토리 안에 하나의 프로젝트가 들어가있는 것이 일반적인데, 이러한 일반적인 형태의 프로젝트 구성을 Multi-repo, PolyRepo 라고 한다. 모노레포를 사용하는 ...
패키지 매니저 잠금 파일(lock)
npm이나 yarn을 사용하면 package-lock.json, yarn.lock 파일이 생성되는 것을 확인할 수 있다. 왜 그럴까? 자세한 내용은 여기에서 확인할 수 있는데 간략하게 정리해보자면 다음과 같다. 잠금 파일(lock)이 생긴 이유는 설치할때마다 동일한 패키지 버전을 보장하기 위해서이다. 왜냐하면, 시맨틱 버저닝 규칙에 따른...
[Webpack] resolve alias 설정
javascript import 키워드로 모듈을 가져올때 일반적으로는 아래와 같이 상대 경로를 통해 해당 모듈을 가져오게 된다. import child from './store/child'; 하지만 만약 이를 절대 경로를 하고자 한다면 어떻게 해야할까? 바로 웹팩에 resolve object에 alias 설정을 해주면 된다. 실습을 위해 util...
yarn workspace
모노레포에 대해선 여기에서 알아보았고 모노레포를 구성하는 방법 중에 yarn workspace 로 구성하는 방법을 알아보자. yarn workspace 사용법 들어가기에 앞서 yarn 의 workspace 기능을 통해서 MonoRepo 를 구성하는 방식은 아주 간단하다. 먼저 아래 커맨들를 실행하여 npm프로젝트를 초기화해주자. yarn init...