분류 전체보기
[Effective Java] ordinal 인덱싱 대신 EnumMap을 사용하라
ordinal의 잘못된 사용 이따금 배열이나 리스트에서 원소를 꺼낼 때 ordinal 메서드로 인덱스를 얻는 코드가 있다. public class Plant { enum LifeCycle { ANNUAL, PERENNIAL, BIENNIAL } final String name; final LifeCycle lifeCycle; public Plant(String name, LifeCycle lifeCycle) { this.name = name; this.lifeCycle = lifeCycle; } @Override public String toString() { return name; } } public class Client { public static void main(String[] args) { S..
![[Effective Java] 비트 필드 대신 EnumSet을 사용하라](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPzctO%2Fbtsh4ZPWzsC%2FlC5ko76t8VNH4LchU5zdoK%2Fimg.png)
[Effective Java] 비트 필드 대신 EnumSet을 사용하라
비트 필드 비트 필드는 비트 연산을 통해 합집합과 교집합 같은 연산을 효율적으로 할 수 있도록 도와준다. 예를 들어 다음 코드를 보자. public class Text { public static final int STYLE_BOLD = 0; public static final int STYLE_ITALIC = 1; public static final int STYLE_UNDERLINE = 4; public static final int STYLE_STRIKETHROUGH = 8; ... } 각각을 비트 필드로 표현해보면 다음과 같다. 비트 필드의 문제는 다음과 같다. 비트 필드의 값이 그대로 출력되면 단순한 정수 열거 상수를 출력할 때보다 해석하기가 어렵다. 비트 필드 : { 0101 }, { STYL..
[Effective Java] ordinal 메서드 대신 인스턴스 필드를 사용하라
ordinal 메서드 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째 위치인지를 반환하는 ordinal이라는 메서드를 제공한다. public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET; public int numberOfMusicians() { return ordinal() + 1; } } ordinal 메서드의 문제를 유지보수성에 있다. 상수 선언을 바꾸는 순간 numberOfMusicians가 오동작하며, 이미 사용중인 정수와 같이 값이 같은 상수는 추가할 수 없다. ordinal은 EnumSet과 EnumMap과 같이 열거 타입 기반의 범용 자료구조에 쓸 목적으로 설계되었으므로 이런 용도가 아니라면 이 메서..
[Effective java] int 상수 대신 열거 타입을 사용하라
정수 열거 패턴 정수 상수를 한 묶음 선언해서 사용하는 패턴 public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD = 2; 정수 열거 패턴에는 다음과 같은 문제가 있다. 1. 타입 안전을 보장할 방법이 없다. public class IntegerEnumeration { public static void makeSa..
![[서평] Wonder (R.J.Palacio)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHvXEm%2FbtshE0BWs7L%2FvsLlEjIComCjM0nQnluqL0%2Fimg.png)
[서평] Wonder (R.J.Palacio)
아이패드를 구매한 이후에는 E-book을 선호해서 서점에 갈 일이 없었는데 최근에 시간이 남아 교보문고에 들러 읽을 만한 책을 찾다가 베스트셀러 추천 도서로 Wonder라는 책을 발견했다. 첫 몇 페이지를 읽어봤는데 시작부터 Auggie라는 캐릭터에게 몰입되었고 책을 구매하게되었다. 원서이지만, 어려운 단어가 많지 않고 상대적으로 공감할 수 있는 묘사때문에 모르는 단어도 유추가 가능하다. 이 책의 주인공 Auggie(August)는 유전적인 문제 때문에 많은 기형적인 문제를 가지고 있다. 수차례의 수술을 겪어야 했고 이런 수술 과정에서 많은 흉터와 일그러진 얼굴을 가져야만 했다. Auggie를 처음 보는 사람은 놀라서 흠칫하기는 기본이고 놀림을 받거나 폭행을 당하기도 한다. 이 때문에 어릴 때는 한 동안..