본문 바로가기

728x90
728x90

Effective JAVA

[이팩티브 자바][아이템 6] 불필요한 객체 생성을 피하라 - 컴도리돌이 자바를 사용하면서 이 객체를 매번 새로 만들어야 할까?라는 상황이 수 없이 오게 됩니다. 저 또한 이런 물음을 스스로에게 던져본 적이 매우 많았죠.. 이펙티브 자바에서 강조하는 불필요한 객체 생성을 피하라 는 원칙이 바로 저 물음에서 시작돼요. 그렇다면 왜 불필요한 객체 생성을 피하는 것이 중요할까요? 🙄 자바에서 객체를 생성하는 건 매우 흔한 일이죠. new 키워드로 쉽게 객체를 만들 수 있으니, 별 다른 고민 없이 계속해서 객체를 생성할 수 있죠. 하지만 반복적인 객체 생성이 메모리와 성능에 어떤 영향을 미칠까요? 🤔객체를 생성하는 과정은 메모리 할당, 초기화, 그리고 생성자 호출 등의 작업을 수반해요. 이러한 작업들이 단일 객체에 대해서는 큰 문제가 되지 않을 수 있지만, 동일한 객체를 반적으로.. 더보기
[이펙티브 자바][아이템 5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 - 컴도리돌이 자원을 직접 생성하거나 관리하는 방식은 코드의 유연성과 유지보수성을 크게 제한할 수 있습니다. 자원을 직접 관리하고 명시하는 방식이 실제로는 많은 문제를 초래할 수 있다고 합니다. 왜 그럴까요? 🤔 자원을 직접 명시하는 경우, 예를 들어 파일 읽기와 같은 작업을 수행하는 유틸리티 클래스를 작성한다고 가정해 볼게요.파일을 읽기 위해 BufferedReader를 직접 생성하는 클래스 FileReaderUtil을 만들었다고 생각해 보면, 클래스 내부에서 직접 BufferedReader를 생성하고 관리하는 코드가 들어가죠. 이렇게 되면, 이 클래스는 파일 시스템과 강하게 결합되게 됩니다. 즉, 파일 경로와 파일을 여는 방식이 하드코딩되어 있어, 만약 파일 경로를 바꾸거나 다른 파일 시스템 접근 방식을 사용해야.. 더보기
[이펙티브 자바][아이템 4] 인스턴스화를 막으려거든 private 생성자를 사용하라 - 컴도리돌이 클래스를 만들 때 모든 메서드가 인스턴스화되어야 할까요? 🤔때때로 우리는 클래스의 인스턴스가 만들어지는 것을 막아야 할 필요가 있어요. 예를 들어, 유틸리티 클래스를 만들거나, 특정 메서드나 상수를 집합적으로 관리하고 싶을 때, 불필요한 인스턴스를 방지하는 것이 중요할 수 있습니다. 그럼 어떻게 해야 할까요? 자바에서는 인스턴스화를 막는 가장 쉬운 방법 중 하나는 private 생성자를 사용하는 것입니다. 이것은 클래스의 인스턴스가 외부에서 생성되지 않도록 보장을 하기 때문이죠. 쉽게 생각하면, 비밀번호로 잠긴 문이 있다고 가정하면, 비밀번호를 모르면 문을 열 수 없듯이, private 생성자를 사용하면 외부에서 인스턴스를 생성할 수 없게 됩니다.  자주 사용하는 유틸리티 메서드를 모아둔 클래스를 만들.. 더보기
[이펙티브 자바][아이템 3] private 생성자나 열거타입으로 싱글턴임을 보증하라 - 컴도리돌이 싱글턴 패턴은 일반적으로 자원의 효율적인 사용과 프로그램의 일관성을 유지하기 위해 사용돼요. 예를 들어, 애플리케이션에서 로깅, 캐시, 설정 정보와 같은 클래스는 인스턴스가 여러 개일 필요가 있을까요?? 당연히 없겠죠? 만약 이런 클래스의 인스턴스가 여러 개라면 상태가 서로 달라질 수 있고, 이는 예기치 않은 버그를 유발할 수 있어요 😔그렇기 때문에 이런 클래스를 싱글톤으로 구현하여, 프로그램 내에서 단 하나의 인스턴스만 존재하도록 하는 것이 중요합니다. 🛠️ private 생성자와 싱글톤 보증자바에서는 싱글톤 패턴을 구현할 때 가장 많이 사용되는 방법 중 하나는 private 생성자를 활용하는 것입니다. 이 방식은 클래스의 인스턴스를 외부에서 생성할 수 없도로 막아줘요.public class Sin.. 더보기
[이펙티브 자바][아이템 1] 생성자 대신 정적 팩토리를 고려해라 - 컴도리돌이 자바에서 객체를 생성하는 전통적인 방법은 'new' 키워드를 사용하는 생성자 호출이에요. 그러나 이번 주제에서는 생성자 대신 정적 팩토리 메서드(static factory methods)를 고려할 것을 권장하는 것을 다뤄보려고 합니다.  1. 명명된 생성자를 통한 가독성 향상자바에서 객체를 생성할 때, 일반적으로 사용하는 방법은 'new' 키워드를 사용하여 생성자를 호출합니다. 근데 이런 방식은 추후에 다른 개발자가 해당 코드를 사용할 때, 조금 많이 힘든 경우가 있어요 🥲 생성자는 클래스 이름과 동일해야 하며, 여러 인자를 받는 경우에도 생성자 자체에 이름을 지정할 수 없죠. 이로 인해 생성자의 목적이나 인자들이 무엇을 의미하는지 명확하지 않을 수 있어요.  public class User { .. 더보기