본문 바로가기

프로그래밍(TA, AA)/JVM 언어

[자바] Effective Java 2/E


발 행: 2014년 9월 1일

지은이: 조슈아 블로크(Joshua Bloch)


머리말 내용 일부 발췌: 

프로그래밍 언어를 잘 사용한다는 것은 무엇일까요? 일단 언어의 핵심을 이해해야 합니다. 알고리즘적 언어인가, 함수형 언어인가, 객체 지향언어인가? 어휘도 알아야 합니다. 표준 라이브러리에 어떤 자료 구조와, 연산과, 기능이 포함되어 있는가? 그런 다음에는 코드 구조를 만드는 관례와 효과적 용법을 이해해야 합니다. 프로그래밍 서적들 상당수는 앞 두 가지에만 신경을 쓰며, 코딩 관례와 효과적 용법은 잠깐씩만 설명하고 넘어갑니다. 


문법과 어휘는 언어에 고유한 속성이지만, 용례는 그 언어를 사용하는 커뮤니티의 특성입니다.


예를 들어 자바(Java)는 단일 계승(Single inheritance)만 지원하는 객체 지향 언어고, 메서드 안에서는 명령문(imperative) 기반의 (구문 중심적 statement-oriented) 코딩 스타일을 지원합니다. 라이브러리에는 그래픽 화면(graphic display) 지원, 네트워킹, 분산 컴퓨팅, 보안 등의 기능이 포함되어 있습니다. 하지만 이 언어는 대체 어떻게 사용해야 최선일까요?


생각해봐야 할 것이 하나 더 있습니다. 프로그램은 자연어 문장이나 책, 잡지와는 달리 시간이 흐르면 변합니다. 효율적으로 동작하며 다른 사람이 이해하기 쉬운 코드를 만드는 것으로는 충분하지 않습니다. 변경하기 쉽도록 코드를 구성해야 합니다. T라는 작업을 수행하는 코드를 만드는 열 가지 방법이 있다고 가정해보겠습니다. 이 열 가지 방법 가운데 일곱 가지는 초보적이고 비효율적이거나 당황스런 해법일 것입니다. 그렇다면 남은 세 가지 가운데 무엇이 내년에 릴리스될 소프트웨어가 수행할 작업 T의 코드와 가장 비슷할까요?


자바의 문법을 배울 수 있는 책은 많습니다. 이펙티브 자바의 경우 코디 관례와 효과적 용법을 설명하는 것입니다. 책의 저자 조슈아 블로크(Joshua Bloch)는 썬 마이크로시스템즈(Sun Microsystems)에서 오랜 시간 자바를 확장하고, 구현하고, 이용한 프로그래머입니다. 멋지게 동작하며, 다른 사람들도 이해하기 쉽고, 나중에 고치거나 개선할 때도 골머리를 싸맬 필요가 없으며, 심지어는 쾌적하면서도 우아하기 그지없는 프로그램을 만들 수 있는 코드 구조를 설계하는 방법이 제시합니다.


잘 설계된 API가 리팩토링에 도움이 됩니다. 리팩토링의 기본적 목표는 시스템의 구조를 개선하고 코드 중복을 막는 것입니다. 이런 목표는 시스템 컴포넌트의 일부로 잘 설계된 API 없이는 달성하기 어렵습니다. 어떤 언어도 완벽하진 않지만, 훌륭한 언어는 있습니다. 자바 프로그래밍 언어와 그 라이브러리는 높은 품질과 생산성을 달성하기 좋은 도구입니다.