본문 바로가기

전체글148

[리팩토링 1판] Chapter 10. 메서드 호출 단순화 Chapter 10. 메서드 호출 단순화 객체에서 가장 중요한 것은 인터페이스다. 이해와 사용이 쉬운 인터페이스를 작성하는 기술이야 말로 좋은 객체지향 소프트웨어 개발에 꼭 필요하다. 인터페이스를 더 쉽게 만드는 리팩토링 가장 간단하면서도 중요한 것은 메서드명을 변경하는 일이다. 매개변수 자체는 인터페이스를 다루는데 상당한 역할을 한다. ... 좋은 인터페이스는 보여줘야 할 만큼만 딱 보여준다. 공개할 필요가 없는 것들을 감추는 것만으로 인터페이스를 개선할 수 있다. 메서드명 변경 메서드명을 봐도 기능을 알 수 없을 땐 메서드명을 직관적인 이름으로 바꾸자. public class Sample1 { public int getInvcdtlmt() { return 0; } } 리팩토링 후 public clas.. 2024. 4. 6.
[리팩토링 1판] Chapter 09. 조건문 간결화 Chapter 09. 조건문 간결화 조건문은 복잡해질 가능성이 높은 만큼, 리팩토링 기법이 다양하다. 그 중 핵심적인 기법은 조건문을 여러 개로 나누는 조건문 쪼개기다. 이 기법은 세부 기능에서 스위칭 로직을 분리하므로 중요하다. 조건문 쪼개기 복잡한 조건문이 있을 땐 if, else-if, else 부분을 각각 메서드로 뺴자. public class Sample1 { public void methodA() { if (data.before(SUMMER_START) || date.after(SUMMER_END)) { charge = quantity + winterRate + winterServiceCharge; } else { charge = quantity + summerRate; } } } 리팩토링 후.. 2024. 4. 4.
[리팩토링 1판] Chapter 08. 데이터 체계화 Chapter 08. 데이터 체계화 이번 장은 내용이 좀 많다. 다 아는 내용일 수도 있지만 "아, 이런 것들이 있었지 혹은 있었구나."라고 복습 차원에서 한번 훓어보는 것이 좋다. 다만, 외우려고 하지 말자. 이 장에서 다루는 리팩토링 기법은 데이터 연동을 더 간편하게 해준다. 많은 이들이 필드 자체 캡슐화는 불필요하다고 생각한다. 객체가 내부의 데이터에 직접 접근하게 해야할지, 아니면 getter/setter 메서드를 통해 접근하게 해야 할지에 대한 문제는 오랫동안 좋은 논란거리였다. 이 책이 2002년에 출판된 책인데.. 사실상 요즘은 거의 패턴이 정해져 있다. 위 고민들은 안하게 되고 당연하게 필드는 캡슐화한다. 필드 자체 캡슐화 필드에 직접 접근하던 중 그 필드로의 결합에 문제가 생길 땐 그 필.. 2024. 4. 3.
[리팩토링 1판] Chapter 07. 객체 간의 기능 이동 Chapter 07. 객체 간의 기능 이동 객체 설계에서 원칙은 아니지만 가장 중요한 일 중 하나가 바로 '기능을 어디에 넣을지 판단'하는 것이다. 기능을 넣을 적절한 위치를 찾는 문제는 메서드 이동과 필드 이동을 하면 된다. 클래스가 방대해지는 원인은 대개 기능이 너무 많기 때문이다. 이럴 때는 클래스 추출을 하면 된다. 메서드 이동 (Move Method) 메서드가 자신이 속한 클래스보다 다른 클래스의 기능을 더 많이 이용할 땐 그 메서드가 제일 많이 이용하는 클래스 안에서 비슷한 내용의 새 메서드를 작성하자. 기본 메서드는 간단한 대리 메서드로 전환하든지 아예 삭제하자. 메서드 이동은 빛과 소금 같은 리팩토링 기법이다. 클래스에 기능이 너무 많거나 클래스가 다른 클래스와 과하게 연동되.. 2024. 4. 1.
[리팩토링 1판] Chapter 06. 메서드 정리 Chapter 06. 메서드 정리 리팩토링의 주된 작업은 코드를 포장하는 메서드를 적절히 정리하는 것이다. 거의 모든 문제점은 장황한 메서드로 인해 생긴다. 장황한 메서드에는 많은 정보가 들어있는데, 마구 얽힌 복잡한 로직에 정보들이 묻혀버린다. 핵심적인 리팩토링 기법은 코드 뭉치를 별도의 메서드로 빼내는 메서드 추출이다. 메서드 추출에서 가장 힘든 작업은 지역변수를 처리하는 것인데, 그건 주로 임시변수 때문이다. 메서드 정리 작업을 할 때 임시변수를 메서드 호출로 전환을 실시해서 없어도 되는 임시변수를 전부 제거한다. 메서드 추출 (Extract Method) 어떤 코드를 그룹으로 묶어도 되겠다고 판단될 때 그 코드를 빼내어 목적을 잘 나타내는 직관적 이름의 메서드로 만들자. public class S.. 2024. 3. 31.
[리팩토링 1판] Chapter 05. 리팩토링 기법 카탈로그에 대해 Chapter 05. 리팩토링 기법 카탈로그에 대해 6장부터 12장까지는 리팩토링 기법을 하나씩 체계적으로 설명하는 카탈로그 형식으로 구성했다. 각 리팩토링 기법 절의 구성 이름 요약 동기 방법 예제 리팩토링를 이해하기 위해서는 각 카탈로그의 예제를 직접 적용해보아야 한다. 리팩토링 1판의 자바 버전은 무려 1.1이라고 한다. (허..) 참조 검색 대다수의 리팩토링 작업에서는 메서드, 인스턴스 값, 클래스 등으로의 참조 부분을 전부 찾아야 된다. 이 때는 IDE의 검색 기능을 활용하는 것이 좋다. 특히 확인 없이 단번에 찾아바꾸기를 실시하지 말고, 각 참조를 일일이 검사하면서 치환하려는 대상이 맞는지 확인해야 한다. 검색 패턴을 잘 활용하는 사람도 있겠지만 실수할 확률도 존재하기 때문이다. 또한 타입을 .. 2024. 3. 30.