'리팩토링'에 해당되는 글 4건

  1. 2007.06.15 [마틴파울러]Refactoring에서 나온 좋은 문구
  2. 2007.06.15 리팩토링의 필요성 및 주의점
  3. 2007.06.15 리팩토링이란?
  4. 2007.06.15 [스크린캐스트] C# 리팩토링
2007.06.15 18:48

[마틴파울러]Refactoring에서 나온 좋은 문구

1. 새로운 기능을 추가해야 하는데 프로그램의 코드가 새로운 기능을 추가하기 쉽도록 구조화 되어

   있지 않은 경우에는 먼저 리팩토링을 해서 프로그램에 기능을 추가하기 쉽게 하고, 그 다음에 기

   능을 추가한다.


2. 리팩토링을 시작하기 전에 견고한 테스트 셋을 가지고 있는지 확인하라. 이 테스트는 자제 검사

   여야 한다.


3. 리팩토링은 작은 단계로 나누어 프로그램을 변경한다. 실수를 하게 되더라도 쉽게 버그를 찾을

   수있다.


4. 컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할

   수 있는 코드를 짠다.


5. 리팩토링(Refactoring) 명사 - 소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수

   있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는것.


6. 리팩토링(Refactoring) 동사 - 일련의 리팩토링을 적용하여 겉으로 보이는 동작의 변화 없이 소

   프트웨어의 구조를 바꾸다.


7. 스트라이크 세 개면 리팩토링을 한다. (스트라이크 - 중복성 작업)


8. 주석을 써야 할 것 같은 생각이 들면, 먼저 코드를 리팩토링 하여 주석이 불필요 하도록 하라.


9. 패턴은 우리가 있고 싶은 곳이고, 리팩토링은 그곳에 이르는 방법이다.

출처 : http://www.okjsp.pe.kr/bbs?act=VIEW&bbs=bbs5&seq=58693

신고
Trackback 0 Comment 0
2007.06.15 13:58

리팩토링의 필요성 및 주의점

☆ 리팩토링의 목적
- 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록...

☆ 리팩토링의 주의점
- 리팩토링은 소프트웨어의 기능을 변경하지 않는다.
- 제대로 동작하지 않는 코드를 리팩토링하지는 않는다.

☆ 리팩토링시, 아래 두 가지 구별된 작업을 위해 시간을 나누어야 한다.
- 기능 추가시, 기존 코드를 건드려서는 안 되고 단지 새로운 기능만 추가해야 한다.
테스트를 추가 하고, 테스트가 잘 작동하는지를 확인함으로써 진행상황을 알 수 있다.
- 리팩토링시, 기능을 추가해서는 안 되고, 단지 코드의 구조에만 신경써야한다. 그리고 어떤 테스트도 추가하지 않는다.

☆ 리팩토링을 하는 이유
- 리팩토링은 소프트웨어의 디자인을 개선시킨다. 정기적인 리팩토링은 코드가 디자인을 유지하도록 도와준다.
- 리팩토링은 소프트웨어를 더 이해하기 쉽게 만든다. 코드를 더 읽기 쉽게 해준다.
- 리팩토링은 버그를 찾도록 도와준다. 코드를 잘 이해하게 되면 버그를 쉽게 찾을 수 있게 된다.
- 리팩토링은 프로그램을 빨리 작성하도록 도와준다. 리팩토링은 시스템의 디자인이 나빠지는 것을 멈추게 하여, 소프트웨어를 보다 빨리 개발할 수 잇도록 도와준다.

##읽기 어려운 프로그램은 수정하기가 어렵다.
##중복된 로직을 가지고 있는 프로그램은 수정하기 어렵다.
##실행중인 코드를 변경해야 하는 특별한 동작을 요구하는 프로그램은 수정하기 어렵다.
##복잡한 조건문이 포함된 프로그램은 수정하기 어렵다.

☆ 리팩토링 시기
- 삼진규칙 : 중복(비슷한) 된 것을 세 번째로 하게 될 때
- 기능을 추가할 때 : 수정해야할 코드에 대한 이해를 돕기 위해서 / 기능 추가가 쉽지 않은 디자인일 경우
- 버그를 수정해야할 때 : 버그가 있었다는 것을 몰랐을 정도로 코드가 명확하지 않았다는 뜻이므로
- 코드 검토(review)를 할 때

☆ 리팩토링이 어려운 경우
- 데이터베이스
〔이유〕데이터베이스 스키마와 밀접하게 결합되어 있는 비즈니스 어플리케이션, 데이터 마이그레이션(migration)
〔방법〕객체 모델과 데이터베이스 모델 사이에 별도의 소프트웨어 계층을 둔다. 이런 계층은 복잡 성을 증가시키지만, 많은 융통성을 제공한다. 처음부터 별도의 분리된 계층을 가지고 시작할 필요없이 객체 모델의 어떤 부분이 변하기 쉽다는 것을 알게 될 때 계층을 만들 수 있다.

- 인터페이스 변경
〔이유] 공표된 인터페이스일 경우
〔방법〕해당 인터페이스를 사용하는 쪽에서 이 변경에 대응할 수 있는 기회를 가질 때까지, 예전의 인터페이스가 새로운 인터페이스를 호출하는 방법으로 예전의 인터페이스와 새로운 인터페이스를 모두 유지.
→ 완전하지 않은 인터페이스를 공표하지 마라. 매끄러운 리팩토링을 위해 코드 소유권 정책을 수정하라.

- 리팩토링을 하지 말아야할 때
․코드를 처음부터 다시 작성해야할 때
․ 마감일이 가까울 때

☆ 리팩토링과 디자인
- 리팩토링은 디자인을 보완하는 역할을 한다. 만약 리팩토링을 하지 않는다면, 나중에 디자인을 바꾸는 데 비용이 많이 들기 때문에 처음부터 정확한 디자인을 해야한다는 부담이 있다. 리팩토링을 하게 되는 경우 사전 디자인은 필요하지만 궁극적인 솔루션을 찾을 필요가 없기 때문에 디자인이 단순해질 수 있다.

...Refactoring 2장, 마틴 파울러

신고
Trackback 0 Comment 0
2007.06.15 13:47

리팩토링이란?

리팩토링이란?
여기저기 중복된 코드는 모아서 하나의 메소드로 만들고, 의미가 불명확한
메소드 이름은 명확한 이름으로 바꾸고, 하나의 메소드가 지나치게 길다면
보다 짧고 이해하기 쉬운 메소드들의 조합으로 바꾸면 코드가 훨씬 깔끔해지고
관리하기도 쉬워질 것이다. 이와 같이 리팩토링은 겉으로 보이는 동작의
변화없이 소프트웨어의 내부구조(디자인)을 바꾸는 작업니다.
이해하기 어려운 코드를 리팩토링하여 이해하기 쉽게 할 수 있고, 새로운
기능을 추가하기 전에 리팩토링을 하여 기능추가가 쉽도록 코드 구조를
바꿀 수도 있다. 요구사항이 바뀌거나 새로운 요구사항이 추가되면서 이를
코드에 반영하다 보면 코드가 처음에 의도했던 디자인과 점점 멀어질수 있는데,
이때도 리팩토링을 통해 디자인을 항상 적절한 상태로 유지시킬 수 있다.

저는 리팩토링기능 중에 move기능만 사용해봤는데요
예를 들어 Test.java 라는 코드가 c:\java\에 있는데
이 코드를 c:\java\example\test\로 이동한다면
Test.java 코드 맨 윗줄에
package example.test; <- 이런 구문이 추가되어야 하는데
이것을 리팩토링이 자동으로 해준다는 것이지요..

만약 옮긴 코드가 하나가 아니라 100개라면 일일히 손으로
바꾸어 줘야 하는 수고를 덜어주는것이지요

이클립스에서 프로젝트에서 새로운 package(폴더) 만든다음
하나의 소스파일을 선택하시고 메뉴에서 refactor->move 기능선택하셔서
새로만드신 폴더로 이동한다음에
소스파일을 열어보시면 새로운 구문이 추가된게 보일겁니다..

출처 : Java세상을 덮치는 eclipse 책 참조

신고
Trackback 3 Comment 0
2007.06.15 13:12

[스크린캐스트] C# 리팩토링

저의 역사적인 첫 번째 스크린캐스트입니다. C# 리팩토링 과정을 찍었습니다. SK-imedia R&D 센터에서 녹화했습니다. 얼마 전에 디자인 패턴 강사를 초빙해야겠다는 이야기가 나왔는데, 리팩토링 정도는 동영상으로 보여줘도 괜찮을 듯 싶었습니다. 이론보다는 실제 개발 과정을 자연스럽게 보여주기 위해 노력했습니다. 이 스크린캐스트는 rename, extract method, make method static 그리고 move 리팩토링 기법과 함께 몇 가지 C# 프로그래밍 팁을 보여줍니다. 15분 30초 정도의 분량이고, 더블 클릭하면 전체 화면으로 볼 수 있습니다.


출처  : http://kaistizen.net/EE/index.php/weblog/comments/screencast_csharp_refactoring/
 
신고
Trackback 0 Comment 0


티스토리 툴바