본문 바로가기
  • 개발하는 곰돌이

Programming Language/Common6

[OOP] 일급 컬렉션(First Class Collection)으로 컬렉션을 다뤄보자 목차 들어가기 전에 컬렉션은 굉장히 유용하고 그만큼 많이 사용되는 자료구조 인터페이스지만 그 자체로도 많은 기능을 구현할 수 있다. 이렇게 유용한 컬렉션을 일급 컬렉션(First Class Collection)으로 사용한다면 이미 강력한 기능을 갖고 있는 컬렉션을 더 안전하고 객체지향적으로 다룰 수 있다. 일급 컬렉션에 대해 정리해본다. 일급 컬렉션? 일급 컬렉션은 아래와 같이 멤버 변수로 컬렉션만 갖고 있는 클래스이다. Kotlin class Team( private val players: MutableList = mutableListOf() ) { // ... 기타 메소드들 } Java public class Team { private final List players; public Team(List.. 2024. 4. 15.
[OOP] 원시 타입을 Wrapper Class로 포장해보자(Value Object) 목차 들어가기 전에 주의! 이 글에서 다루는 Wrapper Class는 일반적으로 자바에서 이야기하는 Integer, Double, Long 등과 같이 원시 타입에 대응하는 클래스가 아니라 개발자가 필요에 의해 작성한 별도의 클래스를 이야기 합니다. 여러 클래스들을 작성하다 보면 숫자 등의 원시 타입 멤버 변수들을 추가하는 경우가 매우 많다. 이러한 멤버 변수들은 클래스의 성질을 나타내기 위해 반드시 필요한 존재들인데 원시 타입 멤버 변수를 Wrapping(포장)해주는 클래스를 작성해서 사용한다면 몇가지 부가 효과를 얻을 수 있다. 이렇게 작성된 Wrapper Class의 객체를 값 객체(VO : Value Object)라고 한다. Wrapper Class를 사용하면 얻을 수 있는 장점을 정리해본다. 원.. 2024. 3. 18.
[OOP] Getter와 Setter는 지양하는게 좋다 목차 들어가기 전에 얼마 전 사내에서 Getter와 Setter를 함부로 사용하면 안되는 이유에 대한 세미나가 있었다. Setter에 대한 이야기는 워낙 많이 알려져있었지만 Getter에 대한 이야기는 잘 하지 않다보니 꽤 흥미로운 주제였다. 그렇다면 왜 Getter와 Setter를 함부로 사용하면 안될까? 이 이유를 한 번 알아보자. Getter와 Setter를 사용하는 이유 객체 지향의 원칙 중 하나는 정보 은닉(Information Hiding)이다. 객체의 구체적인 정보를 외부에 노출하지 말라는 것이다. 이러한 이유 때문에 자바에서는 클래스를 작성할 때 모든 필드를 private으로 숨기고 public 메소드를 통해 간접적으로 필드를 다루게 된다. 코틀린의 경우에는 프로퍼티를 private으로 숨.. 2023. 6. 7.
[Kotlin/Java] 개인적인 Enum 활용기 목차 클린 코드(로버트 C. 마틴 著)를 읽거나 개발 강의를 듣다 보면 리터럴 대신 Enum을 사용하는 것을 권장하는 경우가 많다. 최근 프로젝트를 진행할 때 Enum을 사용하면서 느낀 점에 대해서 정리해보고자 한다. Enum? Enum이란 관련된 요소들을 모아놓은 집합 또는 단어 의미 그대로 열거해 놓은 것이라고 볼 수 있다. 사실 자바를 처음 배울 당시에만 해도 Enum에 대한 내용은 뭔가 잘 와닿지 않았다. 대부분 Enum에 대해서는 짧고 간단하게 다루는 경우가 많았고, 심지어 아예 Enum을 다루지 않은 책들도 있었다. 그러던 도중 배민 기술 블로그에서 Enum을 다룬 글과 최근 수강한 Spring Boot 강의에서 Enum을 활용하는 것을 보고 어떻게 Enum을 활용할 수 있을지 와닿은 점이 있.. 2023. 2. 4.
오버로딩(Overloading) vs 오버라이딩(Overriding) 개요 Java와 Kotlin에서는 다형성을 위해 메소드의 오버로딩과 오버라이딩이 가능하다. 이 두 개념은 전혀 다른 개념이지만 용어가 비슷하기 때문에 잘 구분하는 것이 좋다. 오버로딩(Overloading) : 메소드의 파라미터 개수나 타입을 다르게 하여 같은 이름의 메소드를 여러 개 작성하는 방법 오버라이딩(Overriding) : 부모 클래스의 메소드를 자식 클래스에서 재정의 또는 구현하여 사용하는 방법 메소드의 오버로딩 오버로딩(Overloading). 단어 의미 그대로 해석하자면 과적재라는 뜻이다. 쉽게 생각하면 원래 하나의 메소드는 하나의 기능을 수행해야 하지만 파라미터의 개수나 타입만 다르고 수행하는 동작이 비슷할 경우에는 이 메소드의 이름을 그대로 사용하여 여러 파라미터에 대한 동작이 과적재.. 2022. 12. 13.
한글 식별자에 대해 관련 논문 양단희, Java에서 한글 식별자 사용에 관한 연구 개요 얼마 전 Kotlin에 대해 이것저것 건드려보다가 Java와 Kotlin을 비롯한 대다수의 언어가 상당히 오래전부터 유니코드 문자를 식별자의 이름으로 지원한다는 사실을 알게되었다. 처음 프로그래밍 언어를 배우기 시작할 당시에만 해도 식별자로는 오직 알파벳과 숫자, 언더스코어(_), 달러표시($)만 사용할 수 있다고 배웠다. 그런데 위 논문에 따르면 이미 2000년 경 전후에 대부분의 프로그래밍 언어가 알파벳 뿐만 아니라 한글, 한자, 일본어 등 다국어 식별자 사용을 지원하였다고 한다. 즉, 내가 처음 프로그래밍 언어를 배우던 그 당시에도 이미 많은 언어가 한글 식별자 사용을 지원했다는 것이다. C, C++, Java, Python, Ko.. 2022. 11. 24.