책 이미지

책 정보
· 분류 : 국내도서 > 대학교재/전문서적 > 공학계열 > 컴퓨터공학 > 컴퓨터공학/전산학 개론
· ISBN : 9788984680746
· 쪽수 : 361쪽
· 출판일 : 2002-07-01
책 소개
목차
Chapter 1. 일반적 기법
PRAXIS 1 : 매개변수는 참조가 아니라 값으로 넘겨준다
PRAXIS 2 : 상수나 상수객체참조(constant object references)를 만들 때는 final을 써라
PRAXIS 3 : 모든 non-static 메소드는 자동적으로 오버라이드(override) 된다
PRAXIS 4 : 배열과 Vector중 고를 때 주의하라
PRAXIS 5 : instanceof보다 다형성(polymorphism)이 낫다.
PRAXIS 6 : 어쩔 수 없는 경우에만 instanceof를 써라
PRAXIS 7 : 더 이상 쓰지 않는다면 객체참조를 null로 두라
Chapter 2. 객체와 동일성
PRAXIS 8 : 참조와 원시타입(primitive type)을 잘 가려 써라
PRAXIS 9 : ==과 equals를 가려 써라
PRAXIS 10 : equals의 기본구현을 믿지 마라
PRAXIS 11 : equals 메소드를 사리에 맞게 구현할
PRAXIS 12 : equals 메소드 구현에서 getClass를 선호하라
PRAXIS 13 : 기반 클래스(base class)의 super.equals를 호출하라
PRAXIS 14 : equals 메소드 구현에서 instanceof를 신중하게 사용하라
PRAXIS 15 : equals 메소드를 구현할 때 이러한 규칙들을 따르라
Chapter 3. 예외 처리
PRAXIS 16 : 예외가 처리되는 흐름을 알아두자
PRAXIS 17 : 예외를 무시하지 마라
PRAXIS 18 : 예외를 숨기지 마라
PRAXIS 19 : throws 문의 단점을 생각하라
PRAXIS 20 : throws 문을 구체적이고 전체적으로 파악하라
PRAXIS 21 : 시스템 자원이 새나가는 것을 막기위해 finally를 써라
PRAXIS 22 : try 블럭에서 리턴하지 마라
PRAXIS 23 : try/catch를 반복문밖에 두라
PRAXIS 24 : 제어흐름에 예외를 쓰지 마라
PRAXIS 25 : 에러조건이라고 모두 예외로 처리하지는 마라
PRAXIS 26 : 생성자에서 예외를 던져라
PRAXIS 27 : 예외상황을 알리기 전에 객체를 올바른 상태로 복구하라
Chapter 4. 성능
PRAXIS 28 : 처음에는 설계, 자료구조, 알고리즘에 집중하라
PRAXIS 29 : 컴파일러 최적화옵션에 의지하지 말라
PRAXIS 30 : 런타임 코드 최적화를 이해하라
PRAXIS 31 : 문자열을 이을 때는(concatenation) String보다 StringBuffer를 써라
PRAXIS 32 : 객체생성비용으 최소화하라
PRAXIS 33 : 쓰지 않는 객체를 막아라
PRAXIS 34 : 동기화를 최소화하라
PRAXIS 35 : 가능하면 스택변수를 써라
PRAXIS 36 : 메서드를 인라인하려면(inlining) static이나 final, private으로 선언하라
PRAXIS 37 : 인스턴스 변수를 딱 한번만 초기화하라
PRAXIS 38 : 원시타입(primitive type)을 써서 코드를 작고 빠르게 만들어라
PRAXIS 39 : Vector에서 원소들을 뽑아내어 쓸 때 Enumeration이나 Iterator를 쓰지 마라
PRAXIS 40 : 배열을 복사할 때 System.arraycopy를 써라
PRAXIS 41 : Vector나 ArrayList보다 배열을 써라
PRAXIS 42 : 되도록이면 객체를 재사용하라
PRAXIS 43 : 미루었다가 계산하라(Iazy evaluation)
PRAXIS 44 : 소스 코드를 손수 최적화하라
PRAXIS 45 : native code로 컴파일하라
Chapter 5. 멀티쓰레딩
PRAXIS 46 : 인스턴스 메소드를 synchronized로 선언하면, 메소드나 코드가 아니라, 그 인스턴(객체)에 자물쇠(lock)를 채운다
PRAXIS 47 : 인스턴스 메소드와 클래스 자원에 synchronized를 붙었을 때, 그 차이점을 알자
PRAXIS 48 : public이나 protected 데이터를 쓰기 보다 데이터를 private으로 선언하고 그 값을 메소드로 읽어오라. 데이터 보호에 실패했을 때 동기화 메커니즘을 지나쳐버리게 만들 수 있다
PRAXIS 49 : 꼭 필요할 때만 동기성을 써라
PRAXIS 50 : 함께 쓰는 변수를 건드릴 때는 synchronized나 volatile을 써라
PRAXIS 51 : 하나의 연산에서 쓰는 객체는 모두 열쇠로 채워라
PRAXIS 52 : 교착상태(deadlock)를 피하려면 미리 정해둔 순서대로 열쇠를 얻어오라
PRAXIS 53 : notify보다 notifyAll이 더 낫다
PRAXIS 54 : 메소드 wait와 notifyAll을 이용해서 스핀 락(spin lock)을 쓰자
PRAXIS 55 : 매번 반복해서 물어보는 기법 대신에 wait와 notifyAll을 써라
PRAXIS 56 : 잠긴 객체의 참조를 한번 더 배정하지 마라
PRAXIS 57 : 메소드 stop이나 suspend를 쓰지 않는 게 좋다
PRAXIS 58 : 쓰레드를 끝내고 싶을 때 쓰레드 협동을 이용하라
Chapter 6. 클래스와 인터페이스
PRAXIS 59 : 다중 상속을 지원하기 위해 인터페이스를 사용한다
PRAXIS 60 : 인터페이스의 메소드 충돌을 피하라
PRAXIS 61 : 일부만 구현해도 될 때는 추상클래스(abstract class)를 사용한다
PRAXIS 62 : 인터페이스, 추상클래스, 실제 클래스(concrete class)의 구별하라
PRAXIS 63 : 신중하게 불변 클래스(immutable class)를 정의하고 구현하라
PRAXIS 64 : 불변 객체를 참조할 때는 그 불변 객체를 클론(clone)한다
PRAXIS 65 : 상속이나 위임(delegation)을 써서 불변 클래스를 정의하라
PRAXIS 66 : super.clone을 호출하여 clone 메소드를 구현하라
PRAXIS 67 : 비메모리 자원(non-memory resource)을 청소할 때 finalized 메소드에 기대지마라
PRAXIS 68 : 생성자에서 non-final 메소드를 호출할 때는 주의하라
부록 : (자바배우기)