샘성의 iOS 개발 일지

[Five Lines of Code] 2. 리펙터링 깊게 들여다보기 본문

Programming

[Five Lines of Code] 2. 리펙터링 깊게 들여다보기

SamusesApple 2024. 7. 29. 11:34
728x90

1. 가독성 및 유지보수성 향상

  • 의도 전달로 가독성 향상
  • 불변속성의 범위 제한으로 유지보수성 향상
  • 범위 밖의 코드에 영향 안 주고 위의 2항목 실행
  • 가독성
    • (의도한대로 코드가 잘 동작한다면)의도 전달하기 위한 코드의 상징
  • 유지보수성
    • 시작: 현존하는 일부 기능을 변경 할 때마다 ‘새 코드의 위치 선정을 위한 조사하기‘
      1. ’전역상태‘로 인해 예상치 못한 사이드 이펙트(취약성)이 발생할 수 있다
      2. 전역상태 찾는 트릭
        1. 중괄호 찾기 (중괄호 내부의 변수에 외부 데이터가 할당되는 경우가 많음)
        2. 전역적으로 사용되는 외부 데이터 관찰 및 불변속성 제거하기
    • 코드의 작업을 변경하지 않은 채로 유지보수 하는 법
      • 리펙터링 중에는 코드가 느려져도 신경X (보통 가독성과 유지보수성보다 성능의 가치가 낮다)
      • 성능이 중요한 경우, 리펙토링 다 끝나고 프로파일링 도구 및 성능 전문가의 도움 받아 다른 단계에서 하자
      • 리펙터링 할 코드를 ‘예약’하자
        • 병합 충돌 이슈 방지

 

2. 속도, 유연성 및 안정성 확보

💡 가장 좋은 메서드명을 짓자

 

  • 상속 보다는 Composition을 사용하자
    • 깔끔한 코드 결합과 재사용이 가능해짐 → 유연성!
    • 예시
      • 변수에 클래스 객체 생성해서 할당하기
      • 프로토콜의 컴포지션 활용하기
  • 수정 대신 ’추가에 의한 변경‘을!
    • 컴포지션을 사용함으로써 ‘추가’가 용이해짐!
      • 기존 기능에 영향 주지 않고 새로운 기능 추가 혹은 변경 (개방 폐쇄 원칙)
    • 프로그래밍 속도 상승
      1. 기존 기능의 코드를 두고 새로운 코드를 추가
      2. 코드 베이스 늘어남
      3. 더이상 사용하지 않는 코드가 무엇인지 잘 살펴보고 빠르게 제거하기
    • 안정성
      • 새로운 코드가 실패한 경우, 기존 코드로 대체하기 용이

 

3. 리펙터링과 일상 업무

💡 "항상 여러분이 왔을 때보다 더 좋게 만들어 놓고 떠나세요"

  • 레거시 시스템에서는 변경하기 전에 리펙터링을 하자
  • 코드 변경 후에도 리펙터링 하기
  • 코드 전달하기 전에 리팩터링을 수행하자

리팩터링은 배우는 데 시간이 걸리지만 곧 익숙해진다!

 

> 리팩터링을 연습하면 코드에 대한 독특한 관점을 얻을 수 있으며, 이로 인해 더 나은 해결책을 찾을 수 있다.

 

728x90