본문 바로가기

Java22

레거시 코드 변경 유지보수를 어렵게 만드는 요소들을 모두 뜯어고치고 싶었다. 결국 제가 하고 싶었던 부분은 하나의 서버에서라도 통일된 방법으로 일관성있는 코드를 작성하고 처음 오신분들이라도 빠르게 코드를 분석하고 적응 할 수 있도록 기반을 만들어 놓고 싶었다. 코드파악중에 문제점 이라고 생각했던 부분 정리 되어있지 않던 DTO 클래스의 무분별한 재사용 Entity의 롬복 setter 및 Data 어노테이션 사용 통일 되지 못한 예외처리 방법 트랜잭션 처리 서비스단에 몰려있는 도메인 규칙 리팩토링이 필요한 비즈니스 로직 이정도의 문제점이 있었으면 아래와 같은 방법으로 해결을 했다. 1번의 문제는 비슷한 역활을 하는 DTO를 여기저기에서 마구 재활용을 하고 있었다. 그렇기 때문에 API 스펙이 변경되는 경우에 이곳저곳에서 문.. 2021. 6. 13.
리펙토링 - 일급컬렉션 사용기 사내에서 어플에 새롭게 추가되는 기능을 처음으로 맡아서 API 설계와 기능 구현을 맡았다. 기능이 어느정도 완성이 된 이후 코드리뷰를 개발 팀원들에게 받았다. 코드 리뷰를 받을때 조금 더 깔끔하게 작성할 수 있는 방법에 대해서 리뷰를 받았고 선임 개발자(객체의 마술사) 님께서 일급 컬렉션을 사용해 리팩토링 해보는게 어떻냐고 이야기를 들었다. 일급 컬렉션?.... 처음 들어봤다... 일단 침착하자... 후 그래서 일급컬렉션이 무엇이고 사용하면 무엇이 좋고 어떤점에서 이점을 가지는지 에 대해서는 아주 좋은 블로그 글이 있기에 "동욱님의 글" 을 참고 하면 좋을꺼같다. 그러면 리펙토링 할 코드를 살펴보자. 아래와 같은 stream이 난무 하는 코드를 리펙토링을 해보자. + 일급컬렉션은 관례상(?) 네임뒤에 s.. 2021. 5. 28.
[이펙티브 자바 item24] 멤버 클래스는 되도록 static으로 만들어라 각각의 중첩클래스에는 무엇이 있고 언제 그리고 왜 사용해야 하는지 이야기를 해보자. 아래 그림과 같이 중첩클래스는 4가지로 구분 할 수 있다. 중첩클래스 종류 코드를 통해 각각의 중첩클래스의 특징을 알아보자 1. 내부 클래스(Inner class) - 외부클래스는 내부클래스를 멤버변수처럼 사용할 수 있다. - 내부클래스는 외부클래스의 자원을 직접 사용할 수 있다. package effectiveJava.item24; //내부 클래스 inner class public class Outer{ int aFiled; void aMethod(){ System.out.println( aFiled + " - aMethod()"); } public class Inner{ void innerMethod(){ aFiled.. 2021. 2. 18.
[이펙티브 자바 item23] 태그 달린 클래스보다는 클래스 계층구조를 사용해라 태그 클래스 public class Figure { enum Shape {RECTANGLE , CIRCLE}; //태그 필드 - 현재 모양을 나타냄 final Shape shape; //다음은 RECTANGLE 일경우 사용 double length; double width; //다음은 CIRCLE 일경우 사용 double radius; //RECTANGLE 생성자 Figure(double redius){ shape = Shape.RECTANGLE; this.radius = redius; } //CIRCLE 생성자 Figure(double length , double width){ shape = Shape.CIRCLE; this.length = length; this.width = width; } doub.. 2021. 2. 17.