Tagged

리팩토링

A collection of 13 posts

리팩토링

Introduce Parameter Object

참조 : http://www.refactoring.com/catalog/introduceParameterObject.html여러개의 파라미터를 가지는 메소드의 경우 그 일련의 파라미터들을 가지는 새로운 객체 타입을 받도록 변경할 수 있습니다. Eclipse의 refactoring 기능 중에 저런 리팩터링을 지원하는 것이 없는지 찾아봤지만 못찾았습니다. 있으면 좋으련만… http://dev.eclipse.org/mhonarc/lists/eclipse-pmc/msg00188.htmlhttp://download.eclipse.org/eclipse/

Alt+Shift+R

Eclipse에서 Rename Method 리팩토링

1288767890.bmp getNumberOfMembers() 메소드 이름을 count()로 바꾸는 것이 좋겠다는 의견을 받았습니다. 생각해보니 주소록 어플리케이션에서 숫자를 셀 것이 몇명이나 등록되어 있는지 밖에 없는데 굳이 “몇 명이 있는지 세어라” 라고 할 필요 없이 “몇이냐” 라고 물어보는게 타당하다는 생각이 듭니다. 문제는 getNumberOfMembers() 메소드를 사방에서 사용하고 있다는 것입니다. memberDao

단일 책임 원칙

엔터프라이즈 컴퓨팅 중간고사 5)

 5) [10점] 가상대학에 올라와 있는 프로그램숙제의 예제들을 조사해서 잘못된 점들을 지적하고 수정하여라. 왜 잘못되었는지를 설명하고 수정 후에는 어떻게 좋아졌는지를 설명하라. [#M_답 보기|닫기| WorkerListManagerClass 안에 txt파일로부터 worker 객체를 생성하는 부분을 수업시간에 지적한 바 있습니다. 이 부분의 코드 때문에새로운 worker class를 추가 할 때마다 이 클래스를 변경해야 합니다. 이것은

리팩토링

3장 코드 속의 나쁜 냄새 - 긴 메소드

긴 메소드(Long Method) 최적의 상태로 가장 오래 살아 남는 객체 프로그램은 메소드가 짧다. 인디렉션(indirection)의 이점은 모두 짧은 메소드에 의해 제공되는 것이다. 인디렉션이란? [#M_위키피디아의 정의 펼쳐 보기|닫기| Indirection From Wikipedia, the free encyclopedia Jump to: navigation, search In computer programming, indirection is the ability to reference

Extract Class

Extract Class

두 개의 클래스가 해야 할 일을 하나의 클래스가 하고 있는 경우, 새로운 클래스를 만들어서 관련 있는 필드와 메소드를 예전 클래에서 새로운 클래스로 옮겨라. 동기 클래스가 너무 많은 메소드와 데이터를 가지고 있어서 쉽게 이해할 수 없는 경우가 있다. 이때 데이터의 부분집합과 메소드의 부분집합이 몰려 다닌다면 새로운 클래스로 분리할 수 있다는 좋은

리팩토링

Substitute Algorithm

알고리즘을 보다 명환한 것으로 바꾸고 싶을 때는, 메소드의 몸체를 새로운 알고리즘으로 바꾼다. 위 코드를 보시면 people이라는 문자열 배열안에 Don, John, Kent라는 이름이 있는지 확인하고 만약에 있다면 해당하는 이름을 반환하는 메소드 입니다. 이것을 좀더 명확하게 표현하자면 아래와 같이 변경할 수 있습니다. 동기 어떤 것을 할 때 여러가지 방법이 있다면 그 중에

리팩토링

Pull Up Method

동일한 일을 하는 메소드를 여러 서브클래스에서 가지고 있다면, 이 메소드를 수퍼클래스로 옮겨라. 동기 중복된 동작을 제거해야 하기 때문입니다. 한쪽은 바꿨는데 다른 쪽은 그대로 라면 수정하기도 번거롭고 나중에 버그가 될 가능성이 높을 것입니다. Pull Up Method가 필요한 경우는 서브클래스에 있는 메소드가 수퍼클래스에 있는 메소드를 오버라이드하는데 여전히 같은 일을 하는 때입니다. 이

Eclipse

Extract Method

그룹으로 함꼐 묶을 수 있는 코드 조각이 있으면 코드의 목적이 잘 드러나도록 메소드의 이름을 지어 별도의 메소드로 뽑아낸다. 동기 지나치게 긴 메소드나 주석이 필요한 코드를 보면 그 부분을 하나의 메소드로 뽑는다.(Martin Fowler 曰). 메소드가 잘게 쪼개져 있을 때 다른 곳에서 사용하기 좋다. High-level의 메소드를 보면 주석을 읽는 것 같은

리팩토링

3장 코드 속의 나쁜 냄새 - 중복된 코드

1장과 2장을 통해서 리팩토링이 어떻게 돌아가는지 알게 됐습니다. 하지만 리팩토링을 어떻게 하는지 안다고 해서 할 수 있는 것은 아닙니다. 언제 해야 하는지를 알아야 하는데… 그게 어려운 것 같네요. 3장을 Kent Beck이랑 Martin Fowler가 썼는데도 명확한 시점이라기 어떤 “냄새”가 날 때 라는 모호한 시점을 제기했네요. 경험적으로 인간의

리팩토링

1장 리팩토링, 첫 번째 예제

먼저 리팩토링이란? 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로, 소프트웨어 시스템을 변경하는 프로세스이다. 이것은 버그가 끼어 들 가능성을 최소화하면서 코드를 정리하는 정형화된 방법이다. “코드가 작성된 후에 디자인을 개선한다.” 물론 그 코드는 디자인을 거쳐 작성이 되었겠지만 코드가 디자인을 잘 따르지 않았거나 디자인이 잘 못 됐을 수도 있기 때문에