기본 콘텐츠로 건너뛰기

라벨이 Java인 게시물 표시

Null Object Pattern 과 Optional 사용

오늘 정리해 보고자 하는 건 누구나 다 아는 패턴 중 하나일 Null Object Pattern 에 대해서 한번 생각해 보려고 한다. 일단은 글작성 동기는 어떻게? 퇴사를 얼마 안남기고 막내 프로그래머(경력상 막내지만 착실한 친구)에게 Optional 을 설명해 주고 있었는데, 뭔가 부족한 설명을 한 것 같은 느낌이라 좀 더 어딘가에 정리를 해 놓고 싶었습니다.  Optional 을 설명하다 보면 참 많이 돌아가게 되더구요. 전혀 생각도 못했습니다. 시스템 내에서 NullPointerException 이 어떤 의미로 다가왔었는가 Null Check 로직이 많아지면 얼마나 코드를 읽기 어렵게 만들어 주는가 이런 체크 로직이 많은 상황에서 새로운 다향성 객체가 만들어질 때 얼마나 많은 수정이 일어난는가 등등 그런 이유로 Optional 이 생겨나긴 했는데 일단 그 장점과 위험성은 정리해 놓은 분들이 많으니 블로그를 검색해봐라로 마무리 되었습니다. 그런데 말이죠 예전에도 Null Object Pattern 은 빈번하진 않아도 꽤 사용이 되었던 패턴입니다. 그 정의는 매우 단순합니다. 우선 ChatGPT 가 알려주는 Null Object Pattern 은 이렇습니다. "Null Object Pattern is a design pattern in object-oriented programming that allows the use of a special null object to represent the absence of an object. Instead of returning a null reference from a method or property, the null object pattern provides a substitute object that behaves in a predictable and consistent way with the rest of the system. This can help to reduce the amount of nu...

데이터 클래스 정의를 위한 새로운 타입 Records의 탄생...

3월에 나온 Java 14에서 새롭게 탄생한 타입 Records에 대한 소식은 올해(2020년) 2월쯤 처음 봤던 것 같습니다. 간단히 얘기해서 생성자(Constructor)와 Get(Accessor) 그리고 일반적인 클래스의 기본 요소인 equals(), hashCode(), toString() 을 가지는 데이터 클래스 타입입니다. Records 타입의 경우는 위 다섯 가지 기본 요소를 데이터 클래스에 적합한 형태로 사전 생성해 줍니다. 예를 들면 equals 와 hash 코드 같은 경우는 생성된 서로 다른 Records 객체가 만약 같은 타입과 같은 상태(State. 간단히 안의 Field 값이 다 같은 경우를 말한다고 보면 되겠죠?) 인 경우 동일하게 취급하도록 만들어져 있고, toString()의 경우는 모든 Field의 name과 value를 보여주게 처리되어 있다고 합니다. 저는 스칼라나 코틀린을 잘 모르지만, 스칼라의 case, 코틀린의 data와 같은 역할을 한다고 합니다. 관련 글들을 몇 개 봤었는데 저 같은 경우는 아래 링크의 Preview Post가 가장 이해가 잘 가더군요. 다만, 1월쯤에 쓰인 Preview로 Java 14의 Release 전에 쓰인 글입니다. Java 14 new features: Records 자바 14의 기능을 과연 언제쯤 쓰게 될지는 모르겠지만, 그동안 lombok을 썼던 가장 큰 이유가 하나 없어지는 듯합니다.

[외국포스트공유] 자바개발자가 Enum에 대해서 반드시 알아야할 18가지.

개발하시면서 Enum은 많이 쓰시나요? 저 같은 경우는 회사 다니는 동안에는 사실 Enum을 아주 가끔 쓸 뿐 거의 사용하지 않았었는데요. 회사 그만두고 하는 작업에서는 Enum을 꽤 자주 사용하고 있습니다. 생각보다 편한 부분도 많고 코드 가독성도 좋아지는 것 같고 이래저래 장점이 많은데, 이 부분은 다른 포스트에서 이야기하기로 하고요. 앞으로 몇 개의 포스트가 될지는 모르겠지만 한동안은 Enum에 대한 포스트가 자주 올라가게 될 것 같습니다. 오늘 소개해드릴 것은 그 첫 편으로 자바 개발자가 반드시 알아야 할 Enum의 18가지 포인트에 대한 Pramod Bablad의 DZone에 올라온 글을 간단히 정리하겠습니다. 대부분 아시는 내용일 테고, 혹시 Enum을 아직 쓰지 않거나 잘 모르시는 분들을 위한 내용이라고 생각하시고 봐 주시기 바랍니다. 아래 원문 링크 한번 눌러주세요. (바로 창 닫지 마시고 잠시 열어놓으시면 더 고맙겠네요) 원문 :  https://dzone.com/articles/18-points-every-java-developer-should-know-about-e 1. 정해져 있는 것은 아니지만, Enum의 Constant 들은 대문자로 사용합니다. 2. Enum이 비록 클래스가 아니지만, 클래스와 같이 Field, Constructor, Method를 가질 수 있습니다. 3. Enum의 Constructor(생성자)는 private 으로 선언해야 합니다. 이것은 매우 당연하죠. Enum을 new 로 생성하는 것이 가능하면 안되겠지요? 4. Enum Constant(열거형 상수)는 전체 실행에서 단 한 번만 생성됩니다. 모든 Enum Constant는 그중 하나가 코드에서 사용될 때 생성되고, 각 Enum 상수가 생성될 때 해당 Constructor가 호출됩니다. 5. Enum Constant는 Field, Constructor, Method보다 앞에서 정의되어야 합니다. ...