자기개발

· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 40. @Override 애너테이션을 일관되게 사용하라 @Override 메서드 선언에만 달 수 있으며, 상위 타입의 메서드를 재정의할 때 사용하는 애너테이션이다. 이 애너테이션을 잘 사용해야 안정적인 프로그래밍이 가능하다. ex 1) Bigram 프로그램(영어 알파벳 2개로 구성된 문자열) public class Bigram { private final char first; private final char second; public Bigram(char first, char second) { this.first = first; this.second = second; } public boolean equ..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 39. 명명 패턴보다 애너테이션을 사용하라 명명 패턴 전통적으로 도구나 프레임워크가 특별히 다뤄야할 프로그램 요소에는 딱 구분되는 명명 패턴을 적용해왔다. 예로 테스트 프레임워크인 JUnit은 버전 3까지 테스트 메서드의 이름을 test로 시작하게끔 했다. 효과적이지만 단점도 있다. 오타가 발생하면 안된다. 올바른 프로그램 요소에서만 사용되리라 보증할 방법이 없다는 것 ex) 메서드가 아닌 클래스 이름을 TestSaftyMechanisms로 지어 Junit에 던져줬다고 하면, 개발자는 이 클래스에 정의된 테스트 메서드들을 수행해주길 기대하겠지만 JUnit은 클래스 이름에는 신경쓰지 않는다. 프로그램 요소를..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 타입 안전 열거 패턴 열거 타입은 거의 모든 상황에서 타입 안전 열거 패턴보다 우수하다. 단, 하나의 예외는 타입 안전 열거 패턴은 확장할 수 있다는 것이다. 타입 안전 열거 패턴은 열거한 값들을 그대로 가져온 다음 값을 더 추가하여 다른 목적으로 쓸 수 있는 반면, 열거 타입은 그렇게할 수 없다는 것이다. 사실, 대부분 상황에서 열거 타입을 확장하는 것은 좋지 않다. 확장한 타입의 원소는 기반 타입의 원소로 취급받지만 그 반대는 성립하지 않기 때문이다. 확장성을 높이려면 고려할 요소가 늘어나 설계와 구현이 복잡해진다. 확장할 수 있는 열거..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 37. ordinal 인덱싱 대신 EnumMap을 사용하라 ordinal 메서드 ex 1) Plant 클래스 public class Plant { enum LifeCycle { ANNUAL, PERNNIAL, BIENNIAL} final String name; final LifeCycle lifeCycle; Plant(String name, LifeCycle lifeCycle) { this.name = name; this.lifeCycle = lifeCycle; } @Override public String toString() { return name; } } 정원에 심은 식물들을 배열 하나로 관리하고 이..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 36. 비트 필드 대신 EnumSet을 사용하라 비트 필드 열거 상수 열거한 값들이 주로 (단독이 아닌) 집합으로 사용될 경우, 예전에는 각 상수에 서로 다른 2의 거듭제곱 값을 할당한 정수 열거 패턴을 사용해왔다. ex1) 비트 필드 열거 상수 (예전 기법) public class Text { public static final int STYLE_BOLD = 1
· Algorithm
- 알고리즘 분류 : DFS 및 백트래킹 - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.StringTokenizer; public class Main { static int R, C; static char[][] map; static int[] xmove = {-1,1,0,0}; static int[] ymove = {0,0,-1,1}; static int result = 0; static HashMap charMap = new HashMap(); p..
· Algorithm
- 알고리즘 분류 : DFS - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { static int N, M; static ArrayList map = new ArrayList(); static int result = 0; static boolean[] visited; public static void main(String[] args) throws IOException { Buffere..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 34. int 상수 대신 열거 타입을 사용하라 열거타입 일정 개수의 상수 값을 정의하고 그 외의 값은 허용하지 않는 타입 ex) 사계절, 태양계의 행성 등 ex 1) 정수 열거 패턴 (취약한 코드) 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 fi..
멍목
'자기개발' 태그의 글 목록 (4 Page)