"리팩토링"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 31개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;code refactoring
;[[refactoring]]
;코드 리팩토링; 리팩토링, 재구조화
;리팩토링, 재구조화
*결과의 변경 없이 코드의 구조를 재조정함
* 결과의 변경 없이 코드의 구조를 재조정하는 일
*사용자 화면은 그대로 유지한 채 내부 논리나 구조를 개선함
* [[기술 부채]]([[설계 스멜]], [[코드 스멜]])를 해소하는 일
*외부 동작에는 변화없이 기존 코드의 내부구조를 개선하는 일
* 외부 동작에는 변화없이 기존 코드의 내부구조를 개선하는 일
*목적: 가독성 향상, 생산성 향상, 코드 품질 향상, [[견고성]] 향상, 유지보수 용이하게 함
* 사용자 화면은 그대로 유지한 채 내부 논리나 구조를 개선하는 일
* 기능은 그대로 동작하도록 두고, 소프트웨어 내부를 수정하는 작업
* 기능의 변화없이 기능의 추가 용이함을 의한 일련의 소스 수정 과정
* 애플리케이션 실행 결과의 변경 없이 코드의 구조를 재조정하는 기법
* 목적: 가독성 향상, 생산성 향상, 코드 품질 향상, [[견고성]] 향상, [[유지보수성]] 향상
 
----
* 리팩토링이 최적화는 아니다. 오히려 성능이 저하될 수도 있다.
* 일정이 촉박한 경우에는 하기 어렵다.
* [[유닛 테스트]] 없이는 제대로 하기 어렵다. 리팩토링 후에 뭔가 안될 때, 원래 있던 문제인지 리팩토링 때문에 발생한 문제인지 확인하기 어렵기 때문이다. (즉, 오작동에 대한 걱정 + 원인 규명의 어려움)
 
==하는 이유==
* 가독성이 높아진다.
* 버그를 찾기 쉬워진다.
* 소프트웨어 설계가 개선된다.
 
==꺼리는 이유==
* 일손·시간 부족
* 리팩토링 지식 부족
* 변경 후 오작동 우려 ★


==예시==
==예시==
*[[메소드 추출 리팩토링]]
{{참고|리팩토링 기법}}
*[[인터페이스 추출 리팩토링]]
* [[메소드 추출]]
*[[이름변경 리팩토링]]
* 인터페이스 추출
*[[파라미터 제거 리팩토링]]
* 이름변경
*[[파라미터 재배열 리팩토링]]
* 파라미터 제거
* 파라미터 재배열


==같이 보기==
==같이 보기==
{{z컬럼3|
{{z컬럼3|
* [[TDD]]
* [[난독화]]
* [[난독화]]
* [[역공학]]
* [[역공학]]
22번째 줄: 41번째 줄:
* [[소스 코드]]
* [[소스 코드]]
* [[코드 리뷰]]
* [[코드 리뷰]]
* [[코딩 표준]]
* [[코드 검사]]
* [[코드 스멜]]
* [[코드 스멜]]
* [[기술 부채]]
* [[단위 테스트]]
* [[디자인 패턴]]
* [[디자인 패턴]]
* [[단위 테스트]]
* [[테스트 코드]]
* [[DB 리팩토링]]
* [[DB 리팩토링]]
* [[짝 프로그래밍]]
* [[소프트웨어 품질]]
* [[테스트 주도 개발]](TDD)
}}
}}


==참고==
==참고==
*https://en.wikipedia.org/wiki/Code_refactoring
* {{영어위키백과|Code refactoring}}
*https://refactoring.com/catalog/
* https://refactoring.com/catalog/?filter=tags-basic
* https://refactoring.guru/refactoring/techniques
* https://www.youtube.com/watch?v=mNPpfB8JSIU [마틴 파울러] 리팩토링의 중요성


[[분류: 리팩토링]]
[[분류: 프로그래밍]]
[[분류: 프로그래밍]]
[[분류: 소프트웨어 품질]]

2023년 8월 18일 (금) 15:44 기준 최신판

1 개요[ | ]

refactoring
리팩토링, 재구조화
  • 결과의 변경 없이 코드의 구조를 재조정하는 일
  • 기술 부채(설계 스멜, 코드 스멜)를 해소하는 일
  • 외부 동작에는 변화없이 기존 코드의 내부구조를 개선하는 일
  • 사용자 화면은 그대로 유지한 채 내부 논리나 구조를 개선하는 일
  • 기능은 그대로 동작하도록 두고, 소프트웨어 내부를 수정하는 작업
  • 기능의 변화없이 기능의 추가 용이함을 의한 일련의 소스 수정 과정
  • 애플리케이션 실행 결과의 변경 없이 코드의 구조를 재조정하는 기법
  • 목적: 가독성 향상, 생산성 향상, 코드 품질 향상, 견고성 향상, 유지보수성 향상

  • 리팩토링이 최적화는 아니다. 오히려 성능이 저하될 수도 있다.
  • 일정이 촉박한 경우에는 하기 어렵다.
  • 유닛 테스트 없이는 제대로 하기 어렵다. 리팩토링 후에 뭔가 안될 때, 원래 있던 문제인지 리팩토링 때문에 발생한 문제인지 확인하기 어렵기 때문이다. (즉, 오작동에 대한 걱정 + 원인 규명의 어려움)

2 하는 이유[ | ]

  • 가독성이 높아진다.
  • 버그를 찾기 쉬워진다.
  • 소프트웨어 설계가 개선된다.

3 꺼리는 이유[ | ]

  • 일손·시간 부족
  • 리팩토링 지식 부족
  • 변경 후 오작동 우려 ★

4 예시[ | ]

  • 메소드 추출
  • 인터페이스 추출
  • 이름변경
  • 파라미터 제거
  • 파라미터 재배열

5 같이 보기[ | ]

6 참고[ | ]