본문 바로가기

자바4

[JAVA] 불변 클래스 0. 이 글을 쓰게 된 이유 개발을 할 때 수도 없이 클래스는 웬만하면 불변 클래스로 만들라는 소리를 들었다. 나름의 이유들을 들었는데 명확하게 공감되지 않았다. 도대체 왜 불변 클래스로 만들어야하는가에 대한 명확한 이유를 알기위해 이 글을 쓰게 되었다. 1. 불변 클래스란? 이펙티브 자바에서 불변 클래스란 그 인스턴스 내부 값을 수정할 수 없는 클래스라고 만한다. 즉, 해당 인스턴스가 가지고있는 정보들을 수정할 수 없도록 만들어 변하지 않게 하는 클래스이다. 2. 왜 불변 클래스를 사용해야할까? 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉽고, 오류가 생길 여지도 적고 훨씬 안전하다고 한다. 왜 그럴까? 2.1 불변 클래스는 그 자체로 실패 원자성을 제공한다. 실패 원자성이란 메서드에서 .. 2023. 3. 24.
[Java] 객체 지향 vs 성능 0. 이 글을 쓰는 이유 페어 프로그래밍을 하던 중 페어와 성능에 대한 의견이 충돌한 적이 있었다. 객체 지향적으로 코드를 짜다보면 성능이 완벽하지 않은 코드가 생기는 경우가 많다. 예를 들어, for문 하나에서 A, B 둘 다 처리할 수 있는데 역할에 따라 객체를 분리하다보면 각각 for문을 도는 경우가 생긴다. 이럴 경우 어떤 것을 선택하는 것이 맞을까? 1. 객체 지향의 목적 우리는 자바를 비롯한 객체 지향 언어들을 왜 사용할까? 단순히 기능을 구현하기 위해서라면 사실 어떤 언어든 상관없다. 하지만 우리가 객체 지향 언어를 사용하는 이유 중 가장 큰 이유는 유지보수 하기 쉬운 코드를 짜기 위함이다. 유지 보수하기 좋은 코드(객체 지향적인 코드)는 누구든 이해할 수 있게 책임과 역할이 잘 분리되어있음.. 2023. 3. 9.
[JAVA] 객체 안의 public api 선정 기준 0. 이 글을 쓰게된 이유 우테코에서 사다리 미션을 하며 객체의 생성자에 있는 private method를 public api로 열어서 활용하는 것이 어떠냐는 피드백을 받았다. 개인적으로는 그 객체가 그 메소드가 호출되지 않는다면 의미가 없는 객체라고 생각해서 반박(?)을 했는데 다시 리뷰어가 public method로 열어둠으로써 얻는 이점과 private을 했을 때의 단점에 대해 설명 해주셨고 완벽하게 설득 당했다. 그 내용을 공유해보면 다음과 같다. 비즈니스 로직을 파악하기 쉽다. 보통 api 사용자들은 private mathod로 정의 해놓으면 필요하지 않는 이상(오류가 나지 않는 이상) 그 메소드를 잘 읽지 않는다. 하지만 public method는 그 메소드를 사용하려면 (적어도 메소드 명이라.. 2023. 2. 28.
[JAVA] Reflection 0. 이 글을 쓰게 된 이유 Spring을 학습 하다보니 자바의 리플렉션을 접하게 되었다. 리플렉션에 대해서 자세하게는 모르는 상태였어서 이번에 새로 학습하게 된 리플렉션에 대해서 정리 해보려고 한다. 1. Java Reflection API란? 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보에 접근 및 조작할 수 있게 하는 API 일반적인 상황이라면 잘 이해가 안되는 정의이다. 자바에서는 구체적인 클래스가 무엇인지 알아야지 그에 대한 메서드, 타입, 변수 등에 접근할 수 있다. 하지만 reflection은 구체적인 클래스 없이도 그에 대한 정보를 모두 가져오고 심지어 조작까지 할 수 있다고 한다. 이게 무슨 뜻인지 예시를 통해 알아보자. 2. 예시 다음과 같은 Pizza 클래스가 있다고 하자. p.. 2022. 10. 6.