달력

092010  이전 다음

  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  

'Extract Method'에 해당되는 글 2건

  1. 2009/07/03 이클립스 Extract Method 리팩토링Tip
  2. 2006/11/11 Extract Method 리팩토링
다음과 같은 코드가 있다.

score += 10 + rolls[frameIdx + 1] + rolls[frameIdx + 2];

rolls[frameIdx + 1] + rolls[frameIdx + 2] 부분을 메소드로 뽑아내고자 한다. 이클립스에서 블록 지정을 하고 Alt+Shift+M 단축키를 누르면, 다음과 같은 메시지를 만날 수 있다.

Can only extract a single expression or a set of statements.[각주:1]

두 가지 해결책이 있다. 하나는 굳이 이클립스 명령을 쓰지 않는 방법이다. 다른 방법은 블록 지정 부분을 괄호로 묶고 나서 Extract Method 명령을 수행하는 방법이다.

score += 10 + (rolls[frameIdx + 1] + rolls[frameIdx + 2]);

결코, 빠른 방법은 아니지만 몇 가지 사소한 이점이 있다.
  • 타이핑 절감
  • 오타 방지
  • 자동 줄맞춤
  • inline 리패토링하면 다시 제거 가능



  1. 젠장. 보안 툴 탓에 이미지 파일을 못 올린다. [본문으로]
Posted by 영회
JetBrain IDEA 를 쓰는 이들이 refactor 기능에 매료된다고 하는데
이클립스 리팩토링도 많이 개선된 것 같다.
평소 refactor > rename 정도만 쓰다가
Extract Method 를 썼는데 아주 intelligent 하네. :)

메소드 내부에 아래와 같은 코드 블럭이 있었다.

// 테스트를 수행자의 작업 디렉토리 루트를 읽어옴
Properties properties = new Properties();
File file = new File("test/testng.properties");
properties.load(new FileInputStream(file));
String projectRoot = properties.getProperty("project.root");

메소드 내부를 간결하게 하기 위해서 private method 로 분리하고자 할 때
위 부분 전체를 블럭 지정하고 Alt+Shift+M 을 선택


대화상자에서 적절한 이름을 붙여주면 코드가 아래와 같이... :)
// 테스트를 수행자의 작업 디렉토리 루트를 읽어옴
String projectRoot = readTesterWorkspace();
Posted by 영회