자기 개발

· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 58. 전통적인 for 문보다는 for-each 문을 사용하라 ex 1) for 문으로 컬렉션 순회하는 예 for (Iterator i = c.iterator(); i.hasNext(); ) { Element e = i.next(); ... } ex 2) for 문으로 배열을 순회하는 예 int[] a = {0,1,2,3,4}; for (int i = 0; i < a.length; i++) { ... } 이렇게, for문을 사용하게 되면 반복자와 인덱스 변수가 필요하다. 이처럼 쓰이는 요소 종류가 늘어나면 오류가 생길 가능성이 넓어진다. 혹시라도 잘못된 변수를 사용했을 때 컴파일러가 잡아주리라는 보장도 없..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 57. 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지며 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 팁 가장 쉬운 방법은 ‘가장 처음 쓰일 때 선언하기’ 이다. 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어진다. 지역변수를 생각 없이 선언하다 보면 변수가 쓰이는 범위보다 너무 앞서 선언하거나, 다 쓴 뒤에도 여전히 살아 있게 될 수 있다. 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. try-catch 문은 이 규칙에서 예외다. 반복문에..
· Algorithm
- 알고리즘 분류 : BFS - 사용 언어 : JAVA - 문제 요점 - BFS와 PriorityQueue를 사용 - 물을 먼저 퍼트리고, 갈 곳을 탐색 소스 설명은 주석을 참고해주세요. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { public static int R, C; public static char[][] map; public static boolean[][] visited; // 상하좌우에 사용됨 public static ..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 49. 매개변수가 유효한지 검사하라 메서드와 매개변수 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족해야 한다. ex) 인덱스 값은 음수가 아니어야 하며, 객체 참조는 null이 아니어야 한다 등등 이러한 제약은 반드시 문서화를 해야 하며 메서드 몸체가 시작되기 전에 검사해야한다. 메서드 몸체가 실행되기 전에 매개변수를 확인한다면 잘못된 값이 넘어왔을 때 즉각적으로 예외 처리를 할 수 있다. 매개변수 검사를 제대로 못했을 때의 문제점 메서드가 수행되는 중간에 모호한 예외를 던져 원인을 찾는 데 헤맬 수 있다. 메서드가 잘 수행되지만 잘못된 결과를 반환할 수 있다. public 과 prote..
· 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[][] dp = new int[N+1][2];// 각 kg당 필요한 봉투의 갯수. (0: 3kg 봉투의 ..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라 ordinal 메서드 대부분의 열거 타입 상수는 자연스럽게 하나의 정숫값에 대응된다. 모든 열거 타입은 해당 상수가 그 열거 타입에서 몇 번째인지 위치를 반환하는 ordinal 메서드를 제공한다. 위의 이유로 열거 타입 상수와 연결된 정숫값이 필요하면 ordinal 메서드를 이용할 수 있는데 결론적으로 이는 위험하다. ex1) ordinal을 잘못 사용한 코드 public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET, NONET, DECTET; public in..
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 27. 비검사 경고를 제거하라 제네릭을 사용하기 시작하면, 컴파일러의 경고를 볼 수 있다. 그 중 비검사 경고에 대해서 알아볼 것이다. 비검사 경고 대부분의 비검사 경고는 쉽게 제거할 수 있으며, 컴파일러는 무엇이 잘못됐는 지 알려준다. (javac 명령줄 인수에 -Xlint:uncheck 옵션을 추가해야만 함) 컴파일러가 알려준대로 수정하면 경고는 사라진다. 비검사 경고를 모두 해결하여 제거한다면 그 코드는 타입 안정성이 보장된다. (런타임에 ClassCastException이 발생할 일이 없고 의도한 대로 잘 동작하리라 확신할 수 있다.) 즉, 할 수 있는 한 모든 비검사 경고를 해결하여 제거해야한다...
· BE/Java
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 26. 로 타입은 사용하지 말라 관련 용어 모음집 한글 용어 영문 용어 예 아이템 매개변수화 타입 parameterized type List 아이템26 실제 타입 매개변수 actual type parameter String 아이템26 제네릭 타입 generic type List 아이템26, 29 정규 타입 매개변수 formal type parameter E 아이템26 비한정적 와일드카드 타입 unbounded wildcard type List 아이템26 로 타입 raw type List 아이템26 한정적 타입 매개변수 bounded type parameter 아이템29 재귀적 타입 한정 recursive ..
멍목
'자기 개발' 태그의 글 목록 (10 Page)