# EffectiveJava

21개의 포스트
post-thumbnail

Consider Builder if parameter so much in constructor

정적 팩토리 메서드와 생성자 둘 다 제약이 하나 있습니다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 것입니다. 빌더 패턴 이외의 방법들을 우선 살펴보겠습니다.매개변수가 많을 경우, 프로그래머들은 점층적 생성자 패턴(telescoping constructor

약 18시간 전
·
0개의 댓글
post-thumbnail

Consider Factory Method Pattern rather than constructor

Effective Java 아이템 1의 내용을 정리한 글입니다.생성자 대신 정적 팩터리 메서드를 고려하라.보통 자바에서 객체를 생성할 때, new keyword를 통해서 생성합니다.하지만 모든 프로그래머가 알아둬야할 기법이 있습니다. 클래스는 생성자와 별도로 정적 팩터

약 22시간 전
·
0개의 댓글
post-thumbnail

Effective Java 3/E 정리

어떤 공부를 해야지 더 성장을 할 수 있을까에 대한 고민이 많았는데 적당한 공부거리를 발견한 것 같습니다. 정리를 잘해보고 알맞는 예제 코드도 찾아보고 작성해보겠습니다. 감사합니다.

1일 전
·
0개의 댓글

[JAVA] String, StringBuffer, StringBuilder

문자열의 + 연산이 많아진다면 메모리, 시간 두 관점 모두에서 손해를 많이보게 된다.이를 위해 StringBuffer와 StringBuilder 클래스가 제공되는데 StringBuffer는 멀티쓰레드에 안전하도록 동기화가 되어있다. 멀티쓰레드로 작동되는 프로그램이라면

2021년 5월 4일
·
0개의 댓글

[JAVA] 라이브러리

이미 많은 뛰어난 프로그래머들의 수많은 연구를 통해 라이브러리가 제공되고 있다. 기능을 직접 구현하기보다 라이브러리를 잘 찾아서 사용하자.라이브러리를 이용한다면 다른 프로그래머도 코드읽기에 수월할수 있다.Random 클래스보다 ThreadLocalRandom 으로 대체

2021년 5월 4일
·
0개의 댓글

정적 팩토리 메소드

전통적으로 인스턴스를 얻는 수단은 Public 생성자다.간단히 이야기하면 좀 어려울 수 있는데, Method 를 Static 으로 설정해 둔것이라고 간단히 이해하고 글을 읽으면서, 아래의 옵션들에 맞게 구성하면 된다.예시로는 String.valueOf(10) 이라하면

2021년 1월 1일
·
0개의 댓글
post-thumbnail

[Item17] 변경 가능성을 최소하라

불변클래스란(Immutable Class) ? 해당 객체의 내부적인 값들을 변경할 수 없는 클래스를 의미한다. 불변 클래스는 해당 객체가 파괴되는 순간까지 절대 달라지지 않는다.불변 클래스는 가변 클래스보다 설계하고 구현하기 쉽고, 사이드 이펙트로부터 안전하다.클래스를

2021년 1월 1일
·
0개의 댓글
post-thumbnail

[Item16] public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

예시 코드를 하나 보도록 하겠습니다.위와 같은 class는 public이기 때문에 데이터 필드에 직접 접근할 수 있기 때문에 캡슐화의 이점을 제대로 살리지 못한다. 위와 같은 class는 불변성을 보장할 수 없고, 외부에서 접근할 때 부수 작업을 수행할 수도 없습니다.

2021년 1월 1일
·
0개의 댓글
post-thumbnail

[Item15] 클래스와 멤버의 접근권한을 최소화하라

앞으로 나오는 package-private은 접근제한자 default와 동일하다고 본다.잘 설계된 컴포넌트와 잘 설계하지 못한 컴포넌트는 내부 데이터를 외부에 얼마나 잘 숨겼는가만 봐도 알 수 있다. 잘설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨 구현과 API를 깔

2020년 12월 27일
·
0개의 댓글
post-thumbnail

[Item14] Comparable을 구현할지 고려하라

Item14는 Comparable Interface의 메서드인 compareTo()에 대한 내용을 다룬다.compareTo 메서드는 Object의 메서드가 아닌 Comparable 메서드이며 두가지만 빼면 Object 클래스의 equals와 같다.compareTo 메서

2020년 12월 27일
·
0개의 댓글
post-thumbnail

[Item13] clone 재정의는 주의해서 진행하라.

Cloneable 는 복제해도 되는 클래스라는것을 명시하는 용도의 인터페이스 이지만, clone메서드가 선언된 곳이 Cloneable 클래스가 아닌 Object 클래스이다또한 clone 메서드는 protected로 되어있다. 그래서 외부 객체에서 clone 메서드를 호

2020년 12월 27일
·
0개의 댓글
post-thumbnail

[Item11] equals를 제정의하려거든 hashCode도 재정의하라

위에 적어놓은 소제목 처럼 hashCode를 재정의하지 않는다면 일반 규약을 어기게 되어 HashMap이나 HashSet같은 Collection에서의 원소로 사용될 때 문제를 일으키게 된다.equals에 사용되는 핵심 필드가 변경되지 않았다면 , 실행되는 동안 hash

2020년 12월 20일
·
0개의 댓글
post-thumbnail

[Item10] equals는 일반 규약을 지켜 재정의하라

이번 Item10은 equals에 대한 내용에 대한 글이 있습니다equals 메서드는 재정의하기 쉬워 보이지만 잘못된 구성을 하면 생각하지도 못한 사이드 이펙트때문에 디버깅하는데 문제를 발생시킬 수 있습니다. 문제를 발생시키지 않기 위해서는 애초에 재정의 하지 않는것을

2020년 12월 14일
·
0개의 댓글
post-thumbnail

[Item9] try-finally 보다는 try-with-resources를 사용하라

Java 라이브러리에는 close 메서드를 호출하여 직접 닫아줘야 하는 자원들이 많다.대표적인 예로는 InputStream, OutputStream, java.sql.Connection이 좋은 예이다.자원을 닫는 방식은 클라이언트가 놓치기 쉬워, 예측할 수 없는 성능

2020년 12월 11일
·
0개의 댓글
post-thumbnail

[Item8] finalizer와 cleaner사용을 피하라

Item8 은 finalizer와 cleaner의 사용을 피하라는 내용입니다.저같은경우는 2개가 어떤건지 모르지만 이번 기회에 공배해보면서 왜 피하라고 하는지 알아보도록 하겠습니다.일단 finalizer와 cleaner은 자바에서 제공하는 2가지 객체 소멸자이다.fin

2020년 12월 11일
·
0개의 댓글
post-thumbnail

[Item7] 다 쓴 객체 참조를 해제하라

Item6은 객체 참조 해제에 관한 내용입니다.Java같은 경우에는 C와 C++과 다르게 메모리를 직접 관리하지 않아도 알아서 회수해가니 메모리 관리가 필요없다! 라고 생각하시는 분들이 많을거라고 생각합니다. 저 또한 그렇게 생각하고있었습니다. 어차피 다 관리해주는데?

2020년 12월 11일
·
0개의 댓글
post-thumbnail

[Item6] 불필요한 객체 생성을 피하라.

Item6은 불필요한 객체를 매번 만들지 말고 재사용해서 쓰는편이 좋다에 대한 개념으로 시작합니다 지금 보는 코드는 Item6에 해당하는 극단적인 예입니다 바로 String 을 new 를 통해 인스턴스를 만드는 방법입니다위의 코드는 해당 코드가 실행될때 마다 새로운 S

2020년 12월 10일
·
0개의 댓글
post-thumbnail

[Item4] 인스턴스화를 막으려거든 private 생성자를 사용하라

\_아직 Item4까지 밖에 보지 않았지만 정말 개발을 하면서 신경쓰지 않았던 부분에 대해서 다시한번 반성하고 배워가게 되는 책인것 같습니다.Item4 같은 경우는 간단하게 보고 넘어가도 될듯 하여 짧게 포스팅을 하려고 합니다 .자동으로 생성된 생성자가 아닌 명시적으로

2020년 12월 8일
·
0개의 댓글
post-thumbnail

[Item3] private 생성자나 열거 타입으로 싱글턴임을 보증하라

Item3까지 오게 되었습니다. 바로 시작해보겠습니다.Effective Java에서의 Item3에서는 private 생성자나 열거타입으로 싱글턴임을 보증하라는 내용입니다.일단 싱글턴에 대해 알아보겠습니다 .싱글턴(singleton) 이란 인스턴스를 오직 하나만 생성할

2020년 12월 7일
·
0개의 댓글
post-thumbnail

[Item2] 생성자에 매개변수가 많다면 빌더를 고려하라

정적 팩토리와, 생성자를 통해 인스턴스를 생성할때에는 공통된 제약이 하나있습니다.바로 선택적 매개변수가 많을경우 적절한 대응이 어렵다는 점입니다. 다음과 같은 TimeUtil이 있다고 가정하겠습니다.지금은 예로 만들어서 클래스 내부에 년월일시분초를 의미하는 6개의 프로

2020년 12월 3일
·
0개의 댓글