|
VC++ 위주의 프로그래밍을 하다가 자바를 시작한지는 몇년 되지 않았기 때문에.. 기본적인 문법을 다루고, 시스템을 구축하기는 어렵지 않았지만 자바 언어 자체에 대한 이해는 부족했던 것이 사실입니다. Effective Java란 책을 읽어 보면서 자바 언어에 대해 좀 더 이해하게 됐다는 느낌이 들었습니다. 솔직히 equals나 hashCode의 재정의 같은 부분은 클래스를 수없이 만들면서도 한번도 생각하지 못한 것이었거든요 -.- 다만, 아쉬웠던 점은 번역서들이 대부분 그렇듯이.. 난해한 번역투의 문장이 많은 것이죠 ^^ 아마도 원서의 내용은 매우 좋았을 것 같은데~~ 영어가 부족하니.. 감안하고 보는 수 밖에요. 그럼 책 내용을 간략하게 정리해보도록 하겠습니다. 1. 객체를 생성하고 파괴하기 Static Factory Method나 Singleton과 같은 것은 디자인 패턴에 대한 책을 잠시 볼 때도 나왔었기에 이해하기가 쉬웠고요.. 쓸데없는 객체를 중복 생성하지 않는 문제.. 다음과 같이 하지 말라는 거죠~ String s = new String("바보"); 경우에 따라 간과하기 쉬운 것 같았슴다~~ 그리고 finalize()를 사용하지 말라는 것.. 가비지 컬렉터가 객체를 파괴하기 전에 호출하지만, 문제는 언제 객체를 파괴할 지 모르기 때문에 호출되는 시점을 알 수 없다는 것이죠.. 음... C++에서는 소멸자를 매우 유용하게 썼었는데.. 자바에서는 실제로 거의 못봤던 것이죠.. 2. 모든 객체의 공통 메소드 구현하기 여기에서 equals()와 hasCode()의 재정의에 대해서 봤습니다. toString()의 재정의는 실제로 많이 사용하기는 했지만, equals()나 hasCode()를 직접 재정의해 본 적은 없었네요.. 표준 구현계약을 지켜서 재정의 하면 된다고 나와 있구요~~ clone() 메소드는 신중하게 재정의하라고 되어 있네요.. 재정의 자체보다는 각 공통 메소드가 하는 일들을 다시 한번 정리한 점이 괜찮았던 것 같네요~~ 3. 클래스와 인터페이스 OOP를 하면 나오는 것이고.. 자바 프로그래밍을 하려면 필수적인 것이라.. 색다른 내용은 없구요. 다만, final을 이용한 불변 클래스 (immutable class)를 많이 쓰라고 하는 점이 기억에 남네요.. 4. C 구문 바꾸기 C언어에서 사용하는 구조체, union, enum 구문을 자바로 어떻게 변경해야 하는지 나타내고 있습니다. 구조체는 클래스로.. union은 클래스인데.. 계층구조로 즉, 추상클래스와 extends를 이용해서 바꾸라고 되어 있네요.. 열거형(enum)은 클래스로 바꾸는데.. 타입안전 열거(typesafe enum) 패턴을 사용하라고 하네요.. 타입안전 열거 패턴은 처음 들어봤는데요.. 나름 유용한 것 같네요. 왜 필요한지는 설명이 잘 되어 있슴다. 5. 메소드 코딩 규칙.. 즉, 메소드의 시그니처나 문서화를 위한 주석 (javadoc 같은 거겠죠..)을 하라는 이야기가 있구요. 중요한 부분으로는 방어복사(defensive copy)라는 것이 나오는데요.. 메소드 내에서 인자(argument)를 처리할 때.. 1. 메소드 내 인자 확인 2. 메소드 내 인자를 가지고 처리 후 결과 리턴 위 과정 사이에.. 즉 1.5 정도에 사용자가 인자의 내용을 바꾸면.. 원하는 결과가 나오지 않을 수 있다는 것이죠~ 매우 간발의 차로 이루어지는 경우겠지만, 프로그래밍에서는 고려해야 하는 부분이겠죠.. 그러므로 1번을 하기 전에 인자를 내부적으로 복사하라는 것이 바로 방어복사라고 합니다. 또하나.. 메소드에서 배열을 결과로 리턴할 때, 값이 없을 경우 null을 리턴하는 경우가 있는데.. null보다는 길이가 0인 배열을 리턴하는 것이 호출한 곳에서 받아서 처리할 때 좋다고 되어 있네요. (음.. 이부분은 이렇게 사용해 왔던 것 같은데.. 다시 염두해 두어야 겠네요) 6. 프로그래밍 일반 일반적으로 고려해야 하는 사항들이 잘 정리되어 있습니다. 라이브러리를 잘 활용해야 한다는 이야기도 있구요.. 정확한 계산에 float이나 double을 사용하면 안된다는 이야기 객체에 대한 참조는 인터페이스로 해야 확장성이 좋다는 점도.. 신중하게 최적화하라는 이야기도 있네요.. (요건 프로젝트 관리 부분에서 한번 다루려고 합니다. ㅋㅋ) 7. 예외처리, 쓰레드, 직렬화 예외를 어떻게 처리해야 하는지.. 잘 설명되어 있구요.. 쓰레드에 대해서는 조심해야 하는 부분들에 대해 간단히 설명되어 있습니다. 마지막으로 자바에서 많이 사용하는 직렬화(serialize)에서 주의사항들도 정리되어 있네요.. 휴.. 내용을 간단히 정리해 봤습니다. 다음에 책 내용이 뭐더라~~ 하지 않으려고 한번 써보네요.. ㅋㅋ 그럼.. 좋은 하루 되세요!! |
|
내만 그런가..이책 좋다는 사람들은 자바 초고수나 신이겠지...
저자만 보고 책을 산 내 실수도 있고..ㅠㅠ
나름 자바 프로젝트도 했지만..책샀다가 돈아깝다고 든적은 처음..
그렇지만 죠슈아 블로치는 존경합니다..
그리고 리뷰쓰는데..무슨 150자 이상서야 올라가고 이런 말도 안되는
리뷰쓰기가 이세상에 어디있단 말인가..
|
|
자바 언어와 API의 기초를 다루는 책들은 무수히 많다.물론 자바를 처음 접하는 사람들은 그런 책을 먼저 봐야 할 것이다. 그러나 그 다음 단계로 프로그래밍 능력을 향상시키는데 도움을 주는 그런 책은 거의 없는것 같다. 특히 실전에서 자바 프로그램을 작성할 때 필히 알아야 할 기법이나 문제의 해결책을 알려주는 책은 이 책이 유일한 것 같다. 웹을 포함해서 어떤 형태의 자바 프로그램을 작성하건 이 책의 내용 은 도움이 된다고 생각한다. 제목 그대로 효율적인 자바 코드 작성을 위해 알아야 할 자바 언어와API의 진수를 78가지 항목으로 상세하게 분류하여 잘 설명하고 있어서
보기 좋았다. 나처럼 자바에 관심이 있거나 실무에 사용 중인 개발자 라면 반드시 이 책을 읽어 보기를 권하고 싶다. 각 항목별로 깊이가 조금씩 다르지만,어떤 항목이든 각자의 실전 능력을 향상시켜 줄 것이다. 거의 7년 전에 나왔던 이 책 초판에 비해 많은 부분이 upgrade되었 음을 새삼 느낀다. 특히 자바 5.0 이후에 새로 추가된 여러 기능들의 필요성을 실감하게 해주는 책인 것 같다. 초판보다 훨씬 더 좋아진 완벽한 개정판인 듯 하다. 번역도 참 잘 되었다고 생각한다. 용어 선택이나 각주로 추가한 역자의 보충 설명, 오역없이 의미가 잘 전달되는 이해하기 쉬운 문장 의 선택 등에서 세련된 번역 skill을 엿볼수 있었다. 는 않았었다. 그런데 이렇게 효과적으로 번역한 것으로 보아, 아마도 역자는 경험 많은 프로선수일 것 같다. 자바의 기본을 알고 있는 프로그래머라면 자신의 능력을 더 향상 시키기 위해 이 책을 꼭 볼 것을 강추, 또 강추한다!!!!! |
|
사실 어렵다. 이책은 어려운 책임이 틀림없다. |
|
추천! 할수밖에 없다. |
|
만약 여러분이 자바의 정석이나 thinking in java 를 읽고 자바문법에 익숙해졌다면 그 후에 읽어야할 실제 개발시 참고해야할 세컨북이다. Cpp와 C#도 동일한 구성의 책이 있는데 모두 읽어볼만하다. 객체복사.직렬화.예외.리플렉션에 대해서 통찰력을 기를수있다. 자바 최고수답게 깊이있는 내용이 많이 담겨져있다. |