본문 바로가기
반응형

분류 전체보기714

[ 아이템 4 ] 인스턴스화를 막으려거든 private 생성자를 사용하라 객체지향적으로 사용하지 않고 남용하는 경우들이 종종 있지만, 정적 메서드와 정적 필드만을 담은 클래스를 만들 수 있다. java.lnag.Math 혹은 java.lang.Arrays처럼 기본 타입 값이나 배여 관련 메서드들을 모아 놓을 수 있다. java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 팩터리 메서드를 모아놓을 수도 있다. ( 자바8에서는 이제 이런 메서드들을 인터페이스에 넣을 수 있다.) final 관련 메서드들도 모을 수 있다. ( finakl 클래스를 상속해서 하위 클래스에 메서드를 넣는 건 불가능) 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 것이 아니다. 하지만 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 .. 2021. 3. 10.
[ 아이템 3 ] private 생성자나 열거 타입으로 싱글턴임을 보증하라 싱글턴이란, 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 예로, 함수(아이템24)같은 무상태 객체나 유일한 시스템 컴포넌트를 들 수 있다. 그런데 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기거 어려울 수 있다. 타입을 인터페이스로 정의하고 구현해서 만든 싱글턴이 아니라면 mock 구현이 불가능하기 때문이다. * 3-1 public static final 필드 방식의 싱글턴 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leaveTheBuilding() {} } private 생성자는 public static final 필드인 El.. 2021. 3. 10.
[ 아이템 2 ] 생성자에 매개변수가 많다면 빌드를 고려하라 2021. 3. 10.
[ 아이템 1 ] 생성자 대신 정적 팩터리 메서드를 고려하라 클래스의 생성자를 얻는 전통적인 방법은 public 생성자이다. 하지만 클래스는 또한 정적 팩터리 메서드(static factory method)를 제공할 수 있다. 그 쿨래스의 인스턴스를 반환하는 정적 메서드를 뜻한다. 다음 코드는 boolean 기본 타입의 박싱 클래스(boxed class)인 Boolean의 예이다. 기본 타입인 boolean 값을 받아 Boolean객체 참조로 반환해준다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } *정적 팩터리 메서드 장점 1. 이름을 가질 수 있다. 생서자는 이름을 가질 수 없어서 설명이 부실하지만, 정적 팩터리는 이름을 잘 지으면 반환될 때 특징을 쉽.. 2021. 3. 10.
210309_TIL * 어제의 다짐 - Spring Security 관련 문서 이해하기 =>공식문서 참조 사이트로 올라온 SpringSecurityManager, BasicAuthenticationFilter, AuthenticationManger, Method Security, XSS, CSRF, Bcryption, CSP 에 대한 공식문서 한번 더 읽고 이해하기 - 프로젝트에 암호화 과정 추가하기 =>로그인 시, PasswordEncoder를 통해 비밀번호를 암호화 하는 과정을 추가 *오늘 한 일 - Spring Security를 통해서 프로젝트 업데이트를 하였다. 오늘은 비밀번호를 암호화하는 BCryption에 대한 문서를 읽고 프로젝트에 추가하였다. 입력된 비밀번호는, 프로젝트에서 그대로 보여지면 안된다. 따라서, .. 2021. 3. 10.
210308_TIL * 어제의 다짐 - 피드백에 따라서 수정하기 => 테스트 설명문을 작성할 때, 예외 발생은 발생했다고 알리기 => optional의 filter 메서드 안에 2가지 일을 넣지 말고 한 메서드는 하나의 일만 할 것 - static final로 상수 값들 변환하기 => djkeh.github.io/articles/Why-should-final-member-variables-be-conventionally-static-in-Java-kor/ 해당 블로그를 참조하여 상수 선언 시 , final -> static final로 수정하기 완료 - dozer mapper 제거하기 => 보류 - equals에 대한 칼럼 해석하고 작성하기 => 작성은 하지 못했지만, equals에 대한 좋은 작성 방법과 원칙들을 공부 *.. 2021. 3. 9.
[ 코드숨 ] 6주차 회고록 dal-lab.com/2019/09/18/today-i-learned/ 오늘 나는 무엇을 배웠나? 오늘 나는 무엇을 배웠나? 2019년 9월 18일 - 아샬 초기 스타트업을 위한 컨설팅 업체인 thoughtbot이란 곳이 있습니다. Ruby on Rails가 유행하던 시절에 여러 기술을 공유해서 유명한 곳이죠. Active Storage dal-lab.com 회고를 쓰기 앞서서, TIL ( Today I Leaned)에 대한 내용, 특히 Three FS를 활용하는 방법을 이해해야 합니다. 위의 달랩 홈페이지 아샬님의 글에서 관련된 내용을 확인할 수 있습니다. * 내맘대로 서론 먼저, 한윤석님 이번주도 고생 많으셨습니다 :) 돌아보니 6주차입니다. 굉장히 시간이 빠르네요, 이번주 또한 치열한 평일을 보냈습.. 2021. 3. 8.
210306_TIL * 어제의 다짐 - JWT 생성 시, 비밀번호 이용하지 않도록 고치기 => 생성된 JWT(토큰)은 해석을 통해서 내용을 확인할 수 있다. 비밀번호를 포함했던 것을 제거했다. - JWT 생성 수정에 따른 리팩토링하기 => 자연스럽게, JWT 생성 메서드 변경에 따라서 다른 코드들도 수정을 했다. - 나머지 클래스에 대해서 테스트 리팩토링하기 => 전체적으로 테스트코드가 실패한 부분들을 수정했다. *오늘 한 일 - JWT 생성 시, 비밀번호를 포함하지 않도록 변경했다. JWT의 claim에 담긴 내용들은 해석을 통해 확인이 가능한 부분이다. 사용자의 유효성 검사를 위해서 email과 password를 입력받았는데, 그것을 토큰 생성에 이용하는 실수를 했다. 또한 email은 유일성을 보장하기 때문에 subj.. 2021. 3. 7.
210305_TIL * 어제의 다짐 1. 테스트코드 작성 마무리하기 => 테스트 코드 작성 완료 2. JWT에 관한 Entity Dto 변환 로직과 테스트 리팩토링 완료하기 => Dozer Mapper 이외에 부분 of 로 정적 팩토리 메서드 생성 3. 정적팩토리 메서드에 대해 이펙티브 자바 살펴보고 글 찾아보기 => 다음날 4. @EqualsAndHashCode 학습하기 => 생성 방법에 대해 공부 5. @RequiredArgsConstructor가 안전한지 문서 번역하고 토론하기 => 결론은 롬복은 사용하지 않는 것으로.. *오늘 한 일 - given에 대한 테스트에서 willThrow에서 매개변수 안에 어떻게 넣는지에 따라 결과가 다르다. 예외 메세지 발생의 여부를 정리하였다. 어떤 함수를 제대로 알고 쓰려면 꼭 공식.. 2021. 3. 7.
반응형