자기개발

· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라 ex 1) 컬렉션이 비어있다면 null을 반환하는 메서드 (따라하지 말 것) private final List cheesesInStock = ...; /** * @return 매장 안의 모든 치즈 목록을 반환한다. * 단, 재고가 하나도 없다면 null을 반환한다. */ public List getCheeses() { return cheesesInStock.isEmtpy() ? null : new ArrayList(cheesesInStock); } 이 코드처럼 null을 반환한다면, 클라이언트는 이 null 상황을 처리하는 코드를 추가로 작성해야 한다..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 53. 가변인수는 신중히 사용하라 가변인수 메서드 명시한 타입의 인수를 0개 이상 받을 수 있다. 가변인수 메서드를 호출하면, 가장 먼저 인수의 개수와 길이가 같은 배열을 만들고 인수들을 이 배열에 저장하여 가변인수 메서드에 건네준다. ex 1) 입력받은 int 인수들의 합을 계산해주는 가변인수 메서드 static int sum(int... args) { int sum = 0; for (int arg : args) sum += arg; return sum; } ex 2) 인수가 1개 이상이어야하는 가변인수 메서드 (좋지 않은 예) static int min(int... args) { if (args.len..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 51. 메서드 시그니처를 신중히 설계하라 API 설계 요령 1. 메서드 이름을 신중히 짓자. 항상 표준 명명 규칙을 따라야한다. 2. 편의 메서드를 너무 많이 만들지 말자. 너무 많으면 익히고, 사용하고, 문서화하고, 테스트하고 ,유지보수 하기 어렵다. 확신이 서지 않으면 만들지 말자. 3. 매개변수 목록은 짧게 유지하자. 4개 이하가 좋다. 같은 타입의 매개변수 여러 개가 연달아 나오는 경우가 특히 좋지 않다. → 실수로 순서를 바꿔 입력하는 경우, 그대로 컴파일되고 실행되어 의도와 다른 동작이 일어남 과하게 긴 매개변수 목록을 줄이는 방법 여러 메서드로 쪼갠다. 쪼개진 메서드 각각은 원래 매개변수 목록..
· Algorithm
- 알고리즘 분류 : dp - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] d = new int[1001]; d[1] = 1; if(N>1) d[2] = 3; // 점화식 : ..
· Algorithm
- 알고리즘 분류 : dp - 사용 언어 : JAVA 소스 설명은 주석을 참고해주세요. import java.io.IOException; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // long으로 선언한 이유 : int의 범위를 벗어나기 때문 long[] d = new long[91]; d[1] = 1; d[2] = 1; // 점화식 : d[i] = d[i-1] + d[i-2]; for(int i=3; i
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 50. 적시에 방어적 복사본을 만들라 클라이언트가 객체의 불변식을 깨뜨리지 못하도록 프로그래밍을 해야한다. 어떤 객체든 그 객체의 허락 없이는 외부에서 내부를 수정하는 일은 불가능하지만, 자칫 잘못하면 내부를 수정하도록 허락하는 경우가 생긴다. ex 1) 기간을 표현하는 클래스 (불변을 지키지 못함) // 기간을 표현하는 클래스 public final class Period { private final Date start; private final Date end; /** * @param start 시작 시각 * @param end 종료 시각. 시작 시각보다 뒤여야 한다. * @throws IllegalA..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 48. 스트림 병렬화는 주의해서 적용하라 병렬화 자바 8부터 parallel 메서드만 한 번 호출하면 파이프라인을 병렬 실행시할 수 있는 스트림을 지원한다. 동시성 프로그래밍을 할 떄는 안정성과 응답 가능 상태를 유지해야 하는데, 병렬 스트림 파이프라인 프로그래밍에서도 마찬가지이다. ex 1) 스트림을 사용해 처음 20개의 메르센 소수를 생성하는 프로그램 public static void main(String[] args) { primes().map(p -> TWO.pow(p.intValueExact()).subtract(ONE)) .filter(mersenne -> mersenne.isProbablePr..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 47. 반환 타입으로는 스트림보다 컬렉션이 낫다. 원소 시퀀스 일련의 원소를 반환하는 메서드 ex) Collection, Set, List, Iterable, 배열 기본은 컬렉션 인터페이스이다. 자바 8이 스트림을 지원하기 시작하면서 적합한 타입을 선택하는 것은 복잡해졌다. 스트림은 반복을 지원하지 않기 때문에, 스트림과 반복을 알맞게 조합해야 좋은 코드가 나온다. ex 1) 자바 타입 추론 실패 예 for (ProcessHandle ph : ProcessHandle.allProcesses()::iterator) { // 프로세스를 처리한다. } 이 코드는 컴파일 오류가 발생한다. ex 2) 스트림을 반복..
멍목
'자기개발' 태그의 글 목록 (2 Page)