본문 바로가기

Refactoring4

리팩토링 - 객체 간의 기능 이동 메서드 이동 (Move Method) 메서드가 자신의 클래스에 있는 기능보다 다른 클래스의 기능을 더 많이 사용하는 경우에 메서드가 많이 사용하는 클래스에 비슷한 내용의 새 메서드를 작성하자. 기존 메서드는 대리 메서드로 전환 또는 삭제하자. 수정전 코드 class Account { private AccountType type; private int daysOverdrawn; double overdraftCharge() { if (type.isPremium()) { double result = 10; if (daysOverdrawn > 7) { result += (daysOverdrawn - 7) * 0.85; } return result; } else { return daysOverdrawn * 1.7.. 2019. 6. 6.
리팩토링 - 메서드 정리 메서드 추출 (Extract Method) 어떤 코드를 그룹으로 묶어도 된다고 판단이 들면, 해당 코드들을 빼내어 목적을 잘 나타내는 메서드로 만들자 수정전 코드 public void printOwing(double previousAmount) { System.out.println("****************"); System.out.println("*****고객 외상****") System.out.println("****************"); double outstanding = previousAmount * 1.2; for (Order o : orders) { outstanding += o.getAmount(); } System.out.println("name: " + name); Syste.. 2019. 5. 16.
리팩토링 - 리팩토링 개론 리팩토링은 무엇인가 '리팩토링' 용어는 문맥에 따라 두 가지 의미로 정의된다. 겉으로 드러난 기능은 그대로 두고, 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업 리팩토링 기법을 연달아 적용해서 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다. 리팩토링의 목적은 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것이다. 그리고 리팩토링은 겉으로 드러나는 소프트웨어 기능에 영향을 주지 않는다. 리팩토링은 왜 해야 하나 리팩토링은 소프트웨어 문제를 해결하는 만병통치약은 아니지만, 리팩토링의 가치는 코드를 쉽게 이해할 수 있게 도와주는 도구이다. 리팩토링은 다양한 용도로 사용이 가능하다. 소프트웨어 설계 개선되니까 가끔 단기적인 목적으로 코드를 추가할 때가 있다. 이러한 방식.. 2019. 5. 4.
리팩토링 - 코드의 구린내 코드의 구린내 구린내라는 표현은 캔트 벡이 마틴 파울러에게 제안한 아이디어이다. 어딘가 구리다, 별로다 라는 표현을 '구린내'라고 빗대어 표현한 것이다. 리팩토링이 필요한 코드를 코드의 구린내가 난다고 표현한다. 중복 코드 (Duplicated Code) 중복 코드는 코드의 구린내 중 하나이다. 똑같은 코드 구조가 두 군에 이상에서 중복으로 사용될 때, 이를 하나로 통일하면 프로그램이 개선된다. 중복 코드의 예로 한 클래스의 두 개의 메서드에 동일한 코드 구조가 들어가 있는 경우이다. 이럴 때는 메서드 추출 기법을 사용해서 중복되는 코드를 빼내어 별도의 메서드로 구성하는 것이 좋다. public void methodA() { methodC(); } public void methodB() { methodC.. 2019. 4. 28.