Now's Log
Preview Image

프리코스 1주차를 진행하며

들어가며 우아한테크코스 8기 프리코스 1주차 과제는 문자열 계산기 구현이었다. 간단해 보이는 과제였지만, 실제로 구현하면서 다양한 문제 상황을 마주했고 하나씩 해결해나가는 과정에서 많은 것을 배울 수 있었다. 이 글에서는 구현 중 만났던 여러 고민들과 해결 과정을 기록하고자 한다. 1. 커스텀 구분자 사용 시 기본 구분자도 함께 쓸까...

Preview Image

[Effective Java] - 멤버 클래스는 되도록 static으로 만들라

Item 24 : 멤버 클래스는 되도록 static으로 만들라 들어가며 중첩 클래스(nested class)는 다른 클래스 안에 정의된 클래스를 말한다. 중첩 클래스는 자신을 감싼 바깥 클래스에서만 쓰여야 하며, 그 외의 쓰임새가 있다면 톱레벨 클래스로 만들어야 한다. 중첩 클래스의 종류는 네 가지다. 정적 멤버 클래스 (비정적) 멤버 ...

Preview Image

[Effective Java] - 인터페이스는 구현하는 쪽을 생각해 설계하라

Item 21 : 인터페이스는 구현하는 쪽을 생각해 설계하라 들어가며 자바 8 이전에는 기존 구현체를 깨뜨리지 않고는 인터페이스에 메서드를 추가할 방법이 없었다. 인터페이스에 메서드를 추가하면 보통은 컴파일 오류가 났다. 추가된 메서드가 우연히 기존 구현체에 이미 존재할 가능성은 아주 낮았기 때문이다. 자바 8에서는 기존 인터페이스에 메서드를 추가...

Preview Image

[Effective Java] - 상속보다는 컴포지션을 사용하라

Item 18. 상속보다는 컴포지션을 사용하라 들어가며 상속(inheritance)은 코드 재사용의 강력한 수단이지만, 항상 최선은 아니다. 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 된다. 이번 아이템에서는 상속의 문제점과 이를 해결하는 컴포지션(composition) 방식에 대해 알아본다. 주의: 여기서 말하는 상속은 클래스가 다...

Preview Image

[Effective Java] - Comparable을 구현할지 고려하라

Item 14 : Comparable을 구현할지 고려하라 들어가며 객체들을 정렬해야 하는 상황에 종종 직면한다. 학생들을 성적순으로, 상품들을 가격순으로, 직원들을 입사일순으로 정렬하는 등의 작업 등이 있다. Java는 이러한 정렬 작업을 위해 Comparable 과 Comparator 라는 두 가지 강력한 도구를 제공한다.이번 아이템 14에서는...

Preview Image

[Effective Java] - 다 쓴 객체 참조를 해제하라

Item 7 다 쓴 객체 참조를 해제하라 들어가며 자바 개발자라면 누구나 가비지 컬렉터(Garbage Collector, GC) 덕분에 C/C++ 처럼 직접 메모리 관리에 신경 쓸 일이 거의 없다고 생각할 것이다. 실제로 가비지 컬렉터 구현은 매우 효율적이라고 알려져 있기도 하다. 이번 아이템에서는 이러한 오해를 깨트리고 우리가 예상치 못했던 순...

Preview Image

인텔리제이 테스트 실행 시 ClassNotFoundException 오류 해결

들어가며 이번에 과제전형을 진행하는 중 인텔리제이 오류를 겪어 해결과정을 정리해두고자 한다. 어느 회사 과제, 과제 내용, 그리고 관련된 내용이나 코드는 전혀 없음을 미리 밝힌다. 오류 상황 macOS 에서 Intellij 로 Spring Boot 프로젝트를 작업했다. 빌드 및 실행, 테스트 모두 잘 되는 상황이었다. 이를 Windows...

Preview Image

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

Item 2 생성자에 매개변수가 많다면 빌더를 고려하라 들어가며 생성자에 매개변수가 많으면 사용하기도 어렵고, 매개변수의 의미를 파악하기 힘들다는 문제가 있다. 예를 들어, 또 비슷한 타입의 매개변수가 여러 개일 때는 순서를 잘못 넣으면 컴파일 시점에서 오류가 발생하지 않아 실수를 유발하기도 한다. 이 경우 점층적 생성자 패턴과 자바빈즈 패턴이 ...