이펙티브 자바를 읽으면서 제가 제대로 적용하지 못했던 부분 혹은 개념적으로 부족했던 부분을 정리하고, 앞으로의 개발에 적용해보고자 합니다. 1. 객체의 생성과 파괴 [ 1. 생성자 대신 정적 팩토리 메서드를 이용하라 ] 메소드 이름을 가질 수 있다. -> 명확한 이름으로 값을 생성할 수 있다. 호출 때 마다 인스턴스를 새로 생성하지 않을 수 있다. 하위 클래스를 반환하는 유연성을 얻을 수 있다. 매개 변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 정적 팩토리 메소드를 작성하는 시점에는 해당 객체의 클래스가 존재하지 않아도 된다. 정적 팩토리 메소드를 작성하는 시점에는 해당 객체의 클래스가 존재하지 않아도 된다. 하지만 정적 팩토리 메서드 역시 다음과 같은 단점이 있다. 하위 클래스로 상속하기 ..
두 번째로 클린코드를 읽으면서 처음 읽었을때와 느꼈던 점이 조금 달라진 것 같습니다. 이번에도 역시 제가 제대로 적용하지 못했던 부분 혹은 개념적으로 부족했던 부분을 정리하고, 앞으로의 개발에 적용해보고자 합니다. 1. 클린코드 핵심 요약 및 정리 [ 1. 객체의 생성에도 유의미한 이름을 사용하라 ] 객체의 생성자가 오버로딩 되는 경우 어떠한 값으로 어떻게 생성되는지 정보가 부족할 수 있다. 그러므로 이러한 경우에는 정적 팩토리 메소드를 사용하는 것이 보다 명확한 코드를 작성하게 해 줄 것이다. 하지만 구현을 드러내는 이름은 피하는 것이 좋다. (p32 참고) // 두 번째 인자가 무엇인지 파악이 어렵다. Product product = new Product("사과", 10000); // 이름을 부여하여..
클린코드를 읽어도, 이펙티브 자바를 읽어도, 개발을 잘하는 팀의 얘기를 들어도 항상 좋은 코드를 얘기할 때면 불변의 객체를 필연적으로 접하게 되는 것 같습니다. 그래서 이번에는 불변의 객체를 사용해야 하는 이유에 대해서 알아고자 합니다. 1. 불변 객체(Immutable Object) 및 final을 사용해야 하는 이유 [ 불변 객체(Immutable Object)란? ] 불변 객체란 객체 생성 이후 내부의 상태가 변하지 않는 객체이다. 불변 객체는 read-only 메소드만을 제공하며, 객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사(defensive-copy)를 통해 제공한다. Java의 대표적인 불변 객체로는 String이 있다. String name = "Old"; name.to..
코드를 작성하다보니 동일한 어노테이션을 여러 클래스에 반복적으로 작성해야 하는 상황이 발생하였다. 이러한 작업이 상당히 번거롭게 느껴졌고, 이러한 반복 작업을 줄이고자 커스텀 어노테이션을 만들어 적용하게 되었는데, 이에 대해 자세히 알아보도록 하자. 1. 다양한 Java 어노테이션 [ 어노테이션의 종류 ] 어노테이션을 직접 개발하기 위해서는 Java에서 제공하는 어노테이션에 대해 먼저 알아야 한다. Java의 어노테이션은 크게 built-in 어노테이션(Built-in Annotation)과 Meta 어노테이션(Meta Annotation)이 존재한다. built-in 어노테이션 Java 코드에 적용되는 어노테이션 @Overrie, @Deprecated, @SuppressWarnings 등이 존재 met..

1. Hadoop의 개념과 아키텍쳐 [ Hadoop이란? ] Hadoop은 Reliable, Scalable하게 분산 처리를 하기 위한 오픈 소스 소프트웨어이다. Hadoop은 Map-Reduce라는 단순한 데이터 처리 모델을 사용함으로써 여러 대의 컴퓨터를 통해 손쉽게 대규모 데이터를 처리하고자 한다. 하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하여 처리한다. (이러한 방식은 Disk I/O에 의해 성능 저하를 유발하며, 추후에 In-Memory 방식으로 처리하는 Spark가 등장하게 되었다.) [ Multi-Layer 구조 ] Hadoop에서 수행하는 역할은 크게 HDFS에 파일을 저장하는 역할과 데이터를 처리하는 역할로 나누어진다. 그..