Java boolean, Boolean Getter/Setter 차이 feat. IntelliJ

이 주제에 대해 이미 많은 블로그 글이 있다는 것을 알고 있습니다. 그럼에도 불구하고 <소트웍스 앤솔러지> 책을 읽으며 생기는 의문이 있었고 그 의문에 대한 나름의 이해를 기록해 보려 합니다.
1. 일급 콜렉션 이란 용어는 어디서 온 것인가?
일급 콜렉션을 찾아보면 한글로 된 결과만 많이 보이고 그 말을 누가 처음 사용했는지 찾기가 어려웠습니다. 책의 원문엔 "Rule 8: Use First-Class Collections"로 되어 있습니다. 하지만 그 어디에도 이 용어에 대한 정의가 없습니다.
coderanch - What is a "first class collection"?
10년 전에 포스팅된 질문 글에서도 이와 같은 의문이 있었다는 것을 알 수 있습니다. 답변을 요약하면 "저자가 고안한 용어인것 같다." 입니다
제 생각 또한 같습니다. 이 용어는 저자가 고안한 용어라고 생각합니다.
First-class citizen 이라는 용어는 프로그래밍 언어에서 다음과 같은 Operation이 가능한 entity를 의미합니다.
자바에서도 사용하는 용어인 First-class function은 함수에 대해 위에서 말한 Operation이 가능하다는 것을 의미합니다.
그럼 First-class collection은 어떻게 이해할 수 있을까요? 자바에 한정해서 보자면 (저자는 예제 코드로 자바를 사용합니다.) Collection 타입은 이미 First Class Citizen입니다. 위에서 언급한 모든 Operation을 수행할 수 있습니다.
책에서 저자는 다음과 같은 언급을 합니다. "콜렉션은 실로 매우 유용한 원시 타입니다" 하지만 자바 언어 관점에서 콜렉션은 원시 타입이 아닙니다. 자바의 원시 타입은 byte, short, int, long, float, double, char 그리고 boolean입니다. 그럼 저자는 무슨 의도로 콜렉션이 원시 타입이라고 말 한 것일까요?
제 생각은 이렇습니다. 저자가 생각하는 콜렉션은 아무 의미 없는 데이터 모음일 뿐이라고 생각했고 그런 의미에서 (데이터를 그룹으로 묶을 수 있는 기능을 제공하는)유용한 원시 타입이라는 표현한 것 같습니다. 이렇게 생각하는 이유는 이와 비슷한 말을 객체지향 생활 체조 - 규칙 3: 원시값과 문자열의 포장 에서도 비슷하게 언급하고 있습니다. "int 값 하나 자체는 그냥 아무 의미 없는 스칼라 값일 뿐이다", 이 때문에 규칙 8은 규칙 3과 사실상 거의 동일한 내용이라고 생각합니다.
댓글
댓글 쓰기