관리 메뉴

김종권의 iOS 앱 개발 알아가기

[Refactoring] 2-2. 리팩터링 원칙, 리펙터링의 목적 본문

Refactoring (리펙토링)

[Refactoring] 2-2. 리팩터링 원칙, 리펙터링의 목적

jake-kim 2022. 1. 21. 23:58

리팩터링과 아키텍처, YAGNI(애그니)

  • 리팩터링이 아키텍쳐에 미치는 실질적인 효과는 요구사항 변화에 자연스럽게 대응하도록 코드 베이스를 잘 설계해주는 장점이 존재
  • 점진적 설계 (incremental design), YAGNI(You Aren't Going to Need It) "필요 없을 것이다"
    • 유연성을 위해 현재 필요하지 않고 추후에 사용될 기능까지 구현하는 것보단 리팩터링을 사용할 것
    • 추측하지 않고 그저 현재까지 파악한 요구사항만을 해결하는 소프트웨어를 구축할 것
    • 아키텍쳐도 그에맞게 리팩터링하여 변경

리팩터링과 소프트웨어 개발 프로세스

  • 최초의 애자일 소프트웨어 방법론 중 하나로 등장한, 익스트림 프로그래밍은 일명 TDD(Test Deiven Development)
  • 리팩터링 하면서 쉽게 오류를 확인할 수 있는 방법은 테스트 코드가 존재하는 형태

리팩터링과 성능

  • 직관적인 설계 vs 성능
    • 직관적인 설계를 위하여 리팩터링을 하면서 프로그램 성능이 느려질 수 있지만 성능보다는 직관적인 설계가 더욱 중요
    • 대부분 프로그램은 전체 코드 중 극히 일부에서 대부분의 시간을 소비하는데, 코드 전체를 고르게 최적화한다면 그중 90%는 효과가 거의 없기 때문에 시간 낭비가 되는 현상 발생
    • 의도적으로 성능 최적화에 돌입하기 전까지는 성능에 신경 쓰지 않고 코드를 다루기 쉽게 만드는데 집중할 것

리팩터링의 유래

  • `리팩터링` 용어의 정확한 유래는 찾을 수 없고, 처음부터 깔끔하게 작성하는 경우는 거의 없다는 것을 경험을 통해 깨닫고 무의식적으로 코드를 작성하면서 수행

* 다음 글 - [Refactoring] 3-1. 코드에서 나는 악취

 

* 참고

- Refactoring (Marting Flowler)

Comments