Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- five lines of code
- Di
- RxSwift
- SWIFT
- Swift코딩테스트
- algorithm
- css학습
- firebase
- Safari Inspector
- TDD
- IOS
- 프로그래머스
- 클린코드
- five lines of cdde
- UIKit
- 앱의생명주기
- unittest
- AutoLayout
- Swift디자인패턴
- 코딩테스트입문
- ios면접
- storekit2
- 카카오맵클론
- hackerrank
- firestore
- alamofire
- 리팩터링
- ARC
- RC
- mrc
Archives
- Today
- Total
샘성의 iOS 개발 일지
[Five Lines of Code] 2. 리펙터링 깊게 들여다보기 본문
728x90
1. 가독성 및 유지보수성 향상
- 의도 전달로 가독성 향상
- 불변속성의 범위 제한으로 유지보수성 향상
- 범위 밖의 코드에 영향 안 주고 위의 2항목 실행
- 가독성
- (의도한대로 코드가 잘 동작한다면)의도 전달하기 위한 코드의 상징
- 유지보수성
- 시작: 현존하는 일부 기능을 변경 할 때마다 ‘새 코드의 위치 선정을 위한 조사하기‘
- ’전역상태‘로 인해 예상치 못한 사이드 이펙트(취약성)이 발생할 수 있다
- 전역상태 찾는 트릭
- 중괄호 찾기 (중괄호 내부의 변수에 외부 데이터가 할당되는 경우가 많음)
- 전역적으로 사용되는 외부 데이터 관찰 및 불변속성 제거하기
- 코드의 작업을 변경하지 않은 채로 유지보수 하는 법
- 리펙터링 중에는 코드가 느려져도 신경X (보통 가독성과 유지보수성보다 성능의 가치가 낮다)
- 성능이 중요한 경우, 리펙토링 다 끝나고 프로파일링 도구 및 성능 전문가의 도움 받아 다른 단계에서 하자
- 리펙터링 할 코드를 ‘예약’하자
- 병합 충돌 이슈 방지
- 시작: 현존하는 일부 기능을 변경 할 때마다 ‘새 코드의 위치 선정을 위한 조사하기‘
2. 속도, 유연성 및 안정성 확보
💡 가장 좋은 메서드명을 짓자
- 상속 보다는 Composition을 사용하자
- 깔끔한 코드 결합과 재사용이 가능해짐 → 유연성!
- 예시
- 변수에 클래스 객체 생성해서 할당하기
- 프로토콜의 컴포지션 활용하기
- 수정 대신 ’추가에 의한 변경‘을!
- 컴포지션을 사용함으로써 ‘추가’가 용이해짐!
- 기존 기능에 영향 주지 않고 새로운 기능 추가 혹은 변경 (개방 폐쇄 원칙)
- 프로그래밍 속도 상승
- 기존 기능의 코드를 두고 새로운 코드를 추가
- 코드 베이스 늘어남
- 더이상 사용하지 않는 코드가 무엇인지 잘 살펴보고 빠르게 제거하기
- 안정성
- 새로운 코드가 실패한 경우, 기존 코드로 대체하기 용이
- 컴포지션을 사용함으로써 ‘추가’가 용이해짐!
3. 리펙터링과 일상 업무
💡 "항상 여러분이 왔을 때보다 더 좋게 만들어 놓고 떠나세요"
- 레거시 시스템에서는 변경하기 전에 리펙터링을 하자
- 코드 변경 후에도 리펙터링 하기
- 코드 전달하기 전에 리팩터링을 수행하자
리팩터링은 배우는 데 시간이 걸리지만 곧 익숙해진다!
> 리팩터링을 연습하면 코드에 대한 독특한 관점을 얻을 수 있으며, 이로 인해 더 나은 해결책을 찾을 수 있다.
728x90
'Programming' 카테고리의 다른 글
[Web] CSS Flexbox와 Grid를 배워보자! (0) | 2024.12.06 |
---|---|
[Five Lines of Code] 1. 리팩터링 리팩터링하기 (0) | 2024.07.29 |