본문 바로가기

Refactoring3

리팩터링 2판 - 08. 기능 이동 8장 기능이동에 나오는 기법들은 다음과 같다. 함수 옮기기 필드 옮기기 문장을 함수로 옮기기 문장을 호출한 곳으로 옮기기 문장 슬라이드 하기 인라인 코드를 함수 호출로 바꾸기 반복문 쪼개기 반목문을 파이프 라인으로 바꾸기 죽은 코드 제거하기 설명만 봐도 대충 느낌오는 한 함수, 필드 옮기기, 반복문 제거 관련 기법, 죽은 코드 제거하기의 기법들이 있는 반면 문장에 대한 기법중 "문장" 이 의미하는게 뭔지 궁금해진다. 때로는 한 덩어리의 문장들이 기존 함수와 같은 일을 할 때가 있다. 라는 설명을 봤을때 처음 든 생각은 그냥 컨텍스트를 부여하지 않은 코드를 문장이라고 표현하신 듯 하다. 1. 함수 옮기기 [왜 하는가?] 모듈성 (Modularity) 모듈화가 얼마나 잘 되어 있느냐 프로그램의 어떤 부분을 .. 2022. 1. 15.
리팩터링 2판 - 02. 리팩터링 원칙 키워드 정리 리팩터링 정의 명사: 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 것 동사: 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러 가지 리팩터링 기법을 적용해서 소프트웨어를 재구성 하는것. 단순히 코드를 정리하는 작업이 아닌, 특정 리팩토링 방식에 따라 코드를 정리하는 것. 동작을 보존하는 작은 단계들을 거쳐 코드를 수정하고, 순차적으로 연결하여 큰 변화를 만들어 내는 것. 리팩토링 과정은 잘게 나눠진다. 과정 중에 코드는 항상 동작해야 한다. * 코드베이스를 정리하는건 재구성이라는 포괄적인 용어이고 리팩터링은 재구성 중 특수한 형태 * 리팩토링은 성능 최적화가 아니다. 리팩토링에 따라 성능이 좋아질 수도 나빠질 수도 있다. 리팩토링하다 코드가 깨지는.. 2021. 10. 14.
리팩터링 2판 - 01. 리팩터링: 첫번째 예시 [Swift] 리팩토링 1장은 좀 자세히 한번 봐도 좋을 것 같아서 정리 Playground 기준으로 코드 작성함 프로그램 예제코드 스펙 - 공연 요청이 들어오면 연극의 장르와 관객 규모를 기초로 비용을 책정, 공연과 별개로 포인트를 지급해서 공연료를 할인 받을 수 도 있음 Swift로 바꾼 예시 프로그램 더보기 import UIKit enum MyError: String, Error { case gerneError = "알수없는 장르" } struct Invoice { var customer: String var performances : [Performance] } struct Performance { var playID: String var audience: Int } struct Play { var name: .. 2021. 9. 29.