아이템 85. 자바 직렬화의 대안을 찾으라 아이템 86. Serializable을 구현할지는 신중히 결정하라 아이템 87. 커스텀 직렬화 형태를 고려해보라 아이템 88. readObject 메서드는 방어적으로 작성하라 아이템 89. 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라 아이템 90. 직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라 아이템 85. 자바 직렬화의 대안을 찾으라 직렬화의 근본적인 문제는 공격 범위가 너무 넓고 지속적으로 더 넓어져 방어하기 어렵다는 점이다. readObject 메서드는 바이트 스트림을 역직렬화하는 과정을 통해 클래스패스 안의 거의 모든 타입의 객체를 만들어낼 수 있다. 이 말은즉슨, 그 타입들의 코드 전체가 공격 범위에 들어간다는 ..
아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라 아이템 79. 과도한 동기화는 피하라 아이템 80. 스레드보다는 실행자, 태스크, 스트림을 애용하라 아이템 81. wait와 notify보다는 동시성 유틸리티를 애용하라 아이템 82. 스레드 안전성 수준을 문서화하라 아이템 83. 지연 초기화는 신중히 사용하라 아이템 84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라 아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라 쓰기와 읽기 모두가 동기화되지 않으면 동작을 보장하지 않는다. volatile 한정자는 배타적 수행과는 상관없지만 항상 가장 최근에 기록된 값을 읽게 됨을 보장한다. 프로그램이 잘못된 결과를 계산해내는 오류를 안정 실패(safety failure)라고 한다. synchron..
아이템 69. 예외는 진짜 예외 상황에만 사용하라 아이템 70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 아이템 71. 필요 없는 검사 예외 사용은 피하라 아이템 72. 표준 예외를 사용하라 아이템 73. 추상화 수준에 맞는 예외를 던지라 아이템 74. 메서드가 던지는 모든 예외를 문서화하라 아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라 아이템 76. 가능한 한 실패 원자적으로 만들라 아이템 77. 예외를 무시하지 말라 아이템 69. 예외는 진짜 예외 상황에만 사용하라 예외는 오직 예외 상황에서만 써야 하고 절대로 일상적인 제어 흐름용으로 쓰여선 안 된다. 특정 상태에서만 호출할 수 있는 '상태 의존적' 메서드를 제공하는 클래스는 '상태 검사' 메서..
아이템 57. 지역변수의 범위를 최소화하라 아이템 58. 전통적인 for 문 보다는 for-each 문을 사용하라 아이템 59. 라이브러리를 익히고 사용하라 아이템 60. 정확한 답이 필요하다면 float와 double은 피하라 아이템 61. 박싱된 기본 타입보다는 기본 타입을 사용하라 아이템 62. 다른 타입이 적절하다면 문자열 사용을 피하라 아이템 63. 문자열 연결은 느리니 주의하라 아이템 64. 객체는 인터페이스를 사용해 참조하라 아이템 65. 리플렉션보다는 인터페이스를 사용하라 아이템 66. 네이티브 메서드는 신중히 사용하라 아이템 67. 최적화는 신중히 하라 아이템 68. 일반적으로 통용되는 명명 규칙을 따르라 아이템 57. 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코..
아이템 49. 매개변수가 유효한지 검사하라 아이템 50. 적시에 방어적 복사본을 만들라 아이템 51. 메서드 시그니처를 신중히 설계하라 아이템 52. 다중정의는 신중히 사용하라 아이템 53. 가변인수는 신중히 사용하라 아이템 54. null이 아닌, 빈 컬렉션이나 배열을 반환하라 아이템 55. 옵셔널 반환은 신중히 하라 아이템 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 아이템 49. 매개변수가 유효한지 검사하라 매개변수의 값이 특정 조건을 만족하기를 바랄 때, 이런 제약은 반드시 문서화해야 하며 메서드 몸체가 시작되기 전에 검사해야 한다. 매개변수의 제약을 문서화한다면 그 제약을 어겼을 때 발생하는 예외도 함께 기술해야 한다. 자바 7에 추가된 java.util.Objects.requir..
팀 동기들과 자바 개발자의 교과서와도 같은(?) 이펙티브 자바 스터디를 시작했다. 한 주에 한 장씩 해서 현재는 9장을 공부하고 있다. 교과서 치고는 내용이 꽤 어려워서 깊이 이해 못한 부분도 있지만 실제로 지금 짜고 있는 코드를 리팩터링 할 때 참고하기 좋은 책인 것 같다. 당장 이해 못한 부분도 이런 내용이 있다는 것만 알면 나중에 필요할 때 꺼내 읽을 수 있겠다. 당장 현업이 바쁘다는 핑계로 읽긴 읽고 있으나 깊이 파고 들진 못하고 있다. 일부 열의 있는 동기들 덕분에 +a로 얻어가는 것들이 있는데, 나도 동기들에게 무언가라도 나눠주려면 조금 더 시간과 에너지를 할애해야겠다. 책에서 다루는 것은 대부분 좋은 코드(유지보수가 용이한, 재사용할 수 있는, 가독성이 좋은)를 짜기 위한 방법론에 대한 내용..
- Total
- Today
- Yesterday