Refactoring 리팩토링<br />8장 <br />- Change Bidirectional<br />Association to Unidirectional<br />- Replace Magic Number <br /...
Change Bidirectional <br />          Association to Unidirectional<br />■ 양방향 연관 관계를 단반향으로 변경하기<br /> - 서로 링크를 가지는 두개의 클래스...
Change Bidirectional <br />          Association to Unidirectional<br />■ 동기<br />  - 양방향 연관(association)은 편리하다.<br />  - ...
Change Bidirectional <br />          Association to Unidirectional<br />■ 절차<br />  - 삭제할 포인터가 참조되는 곳을 조사한다.<br />  - 삭제가 ...
Change Bidirectional <br />          Association to Unidirectional<br />■ 절차<br />  - 필드를 업데이트 하는 코드를 제거한다.<br />   Set 메소...
Change Bidirectional <br />          Association to Unidirectional<br />■ 리팩토링<br />  - 리팩토링에서 가장 어려운 것<br />리팩토링이가능한지 확인하...
Replace Magic Number<br />              with Symbolic Constant<br />■ 특별한 의미를 가진 숫자는 상수로 만들어라.<br />
Replace Magic Number<br />              with Symbolic Constant<br />■ 동기<br /> - 매직 넘버(magic number)는 프로그래밍의<br />가장 오래된 해...
Replace Magic Number<br />              with Symbolic Constant<br />■ 절차<br /> - 상수를 선언하고매직 넘버를 설정한다.<br />- 매직 넘버가 사용되는 곳...
Encapsulate Field<br />■ Public 필드를 Private으로 만들고,<br />접근자를 제공하라.<br />
Encapsulate Field<br />■ 동기<br />- 객체지향의 중요한 교리!<br /> 캡슐화(encapsulation)<br />    데이터 은폐(data hiding)<br /> - 데이터를 절대로 ...
Encapsulate Field<br />■ 절차<br />- 필드에 대한 get/set 메소드를 만든다.<br />  - 필드에 접근하는 모든 코드를 찾는다.<br />     값에 대한 참조는 get 메소드로 바꾼...
감사합니다.<br />
Upcoming SlideShare
Loading in …5
×

리펙토링 8장 p236_p243

940 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
940
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

리펙토링 8장 p236_p243

  1. 1. Refactoring 리팩토링<br />8장 <br />- Change Bidirectional<br />Association to Unidirectional<br />- Replace Magic Number <br />with Symbolic Constant<br />- Encapsulate Field<br />아꿈사http://cafe.naver.com/architect1<br />TTF http://www.npteam.net<br />
  2. 2. Change Bidirectional <br /> Association to Unidirectional<br />■ 양방향 연관 관계를 단반향으로 변경하기<br /> - 서로 링크를 가지는 두개의 클래스에서<br />한 쪽이 다른 한쪽을 더 이상 필요로 하지<br />않을 때는 불필요한 링크를 제거하라.<br />*<br />*<br />1<br />1<br />
  3. 3. Change Bidirectional <br /> Association to Unidirectional<br />■ 동기<br /> - 양방향 연관(association)은 편리하다.<br /> - 그러나 비용이 따른다.<br /> (양방향 링크 확인 비용)<br />■ 양방향 링크에서 발생하는 문제점<br /> - 참조 관계가 제대로 클리어 되지 않아서좀비 객체의 발생 가능성이 있다.<br /> - 상호 종속성으로 인하여 결합도가 증가한다.<br />불필요한 양방향 링크의 한쪽 링크를 끊어라.<br />
  4. 4. Change Bidirectional <br /> Association to Unidirectional<br />■ 절차<br /> - 삭제할 포인터가 참조되는 곳을 조사한다.<br /> - 삭제가 가능한지 확인한다.<br /> - get 메소드를 사용해야 할 경우.<br /> Self Encapsulate Field와<br /> Substitute Algorithm을 적용한 후 테스트한다.<br /> - get 메소드를 사용하지 않을 경우.<br />포인터 대신 다른 방법으로 객체를 얻을 수<br />있도록 적용한 후 컴파일/테스트한다.<br />
  5. 5. Change Bidirectional <br /> Association to Unidirectional<br />■ 절차<br /> - 필드를 업데이트 하는 코드를 제거한다.<br /> Set 메소드를 이용하여 업데이트 하는 코드를<br /> Set 메소드를 호출하도록 변경한다.<br /> Set 메소드를 빈 메소드로 만든다.<br />컴파일 후 이상이 없으면 모두 삭제한다.<br /> - 컴파일, 테스트한다.<br />
  6. 6. Change Bidirectional <br /> Association to Unidirectional<br />■ 리팩토링<br /> - 리팩토링에서 가장 어려운 것<br />리팩토링이가능한지 확인하는 것이다.<br /> - 리팩토링이 가능한지 확인하고 나면,<br />안전하고 쉽게 리팩토링 할 수 있다.<br /> - 리팩토링 하는 방법은 여러가지가 있으므로<br />다양한 관점에서 바라보고 처리한다.<br />예) 포인터로 접근하는 대신 객체를 파라미터로전달하는 방법.<br />
  7. 7. Replace Magic Number<br /> with Symbolic Constant<br />■ 특별한 의미를 가진 숫자는 상수로 만들어라.<br />
  8. 8. Replace Magic Number<br /> with Symbolic Constant<br />■ 동기<br /> - 매직 넘버(magic number)는 프로그래밍의<br />가장 오래된 해악 가운데 하나이다.<br /> 값을 바꾸기 어렵다.<br /> 의미를 이해하기 어렵다.<br />  여러 곳에서 사용하는 경우에 문제가 많다.<br /> - 상수를 사용하면 좋은 점<br />  퍼포먼스에 영향을 주지 않는다.<br />  코드 가독성이 엄청나게 향상된다.<br />
  9. 9. Replace Magic Number<br /> with Symbolic Constant<br />■ 절차<br /> - 상수를 선언하고매직 넘버를 설정한다.<br />- 매직 넘버가 사용되는 곳을 모두 찾는다.<br /> - 매직 넘버를 상수로 치환 가능한지 판단하고,<br />매직 넘버를 상수로 바꾼다.<br /> - 컴파일 한다.<br /> - 위와 같은 방식으로 모든 매직 넘버를 바꾼 후<br />컴파일 및 테스트를 한다.<br /> 모든 동작이 바뀌기 전과 동일해야 한다.<br />
  10. 10. Encapsulate Field<br />■ Public 필드를 Private으로 만들고,<br />접근자를 제공하라.<br />
  11. 11. Encapsulate Field<br />■ 동기<br />- 객체지향의 중요한 교리!<br /> 캡슐화(encapsulation)<br />  데이터 은폐(data hiding)<br /> - 데이터를 절대로 public로 하지 마라!<br />  알지 못하는 사이에 다른 객체가<br />데이터의 값을 변경/수정 할 수 있다.<br /> - Encapsulate Field는 첫 걸음이다!<br />  접근자만으로는 장점이 없다.<br />  Move Method를 이용할 메소드가 있는지<br /> 확인한다.<br />
  12. 12. Encapsulate Field<br />■ 절차<br />- 필드에 대한 get/set 메소드를 만든다.<br /> - 필드에 접근하는 모든 코드를 찾는다.<br />  값에 대한 참조는 get 메소드로 바꾼다.<br />  값을 변경하면 set 메소드로 바꾼다.<br /> - 코드를 수정하고 컴파일및 테스트를 한다.<br /> - 필드에 접근하는 모든 코드를 수정했으면,<br />필드를 private으로 만든다.<br /> - 컴파일 및 테스트를 한다.<br />
  13. 13. 감사합니다.<br />

×