리팩토링 (4) 썸네일형 리스트형 [리팩토링 기술-7] 기본형을 객체로 바꾸기 / 타입 코드를 서브클래스로 바꾸기 / 조건부 로직을 다형성으로 바꾸기 👀 기본형 집착 ? - 어플리케이션이 다루고 있는 도메인에 필요한 기본 타입을 만들지 않고 프로그래밍 언어가 제공하는 기본 타입을 사용하는 경우가 많다. - 기본형으로는 단위 또는 표기법을 표현하기 어렵다. 🙌 기본형을 객체로 바꾸기 (Replace Primitive with Object) - 개발 초기에 기본형 (숫자 또는 문자열)으로 표현한 데이터가 나중에는 해당 데이터와 관련있는 다양한 기능을 필요로 하는 경우가 많다. (예) 문자열로 표현하던 전화번호의 지역코드가 필요한 경우 (예) 숫자로 표현하던 온도의 단위(화씨, 섭씨)를 변환하는 경우 기본형을 사용한 데이터를 감싸 줄 클래스를 만들면, 필요한 기능을 추가할 수 있다. [ Berfore ] Order 클래스에서 우선순위를 의미하는 prioir.. [리팩토링 기술-3] 긴 매개변수를 처리하는 리팩토링 👀 매개변수가 많으면 무엇이 문제일까? 그리고 어떻게 해결할 수 있을까? - 어떤 함수에 매개변수가 많을수록 함수의 역할을 이해하기 어려워진다. 그렇다면 아래 내용을 생각해 봐야한다. 1. 과연 그 함수는 한 가지 일을 하고 있는게 맞는가? 2. 불필요한 매개변수는 없는가? 3. 하나의 레코드로 뭉칠 수 있는 매개변수 목록은 없는가? - 어떤 매개변수를 다른 매개변수를 통해 알아낼 수 있다면, "매개변수를 질의함수로 바꾸기(Replace Parameter with Query)"를 사용할 수 있다. - 매개변수가 플래그로 사용된다면, "플래그 인수 제거하기(Remove Flag Argument)"를 사용할 수 있다. - 여러 함수가 일부 매개변수를 공통적으로 사용한다면 "여러 함수를 클래스로 묶기(Comb.. [리팩토링 기술-2] 긴 함수를 처리하는 리팩토링 👀 짧은 함수 vs 긴 함수 - 함수가 길 수록 이해하기 어렵다! vs 짧은 함수는 더 많은 문맥전환을 필요로 한다. - 작은 함수에 "좋은 이름"을 사용했다면, 해당 함수의 코드를 보지 않고도 이해할 수 있다. - 어떤 코드에 "주석"을 남기고 싶다면, 주석 대신 함수를 만들고 함수의 이름으로 "의도"를 표현해보자. ✍ 긴 코드를 리팩토링할 때 사용할 수 있는 기술 1. 99%는 "함수 추출하기"로 해결할 수 있다. 2. 함수로 분리하면서 해당함수로 전달해야 할 매개변수가 많아진다면, 다음과 같은 리팩토링을 고려해볼 수 있다. (1) 임시 변수를 질의 함수로 바꾸기 (Replace Temp With Query) (2) 매개변수 객체 만들기 (Introduce Parameter Object) (3) 객체.. [리팩토링 기술-1] 중복코드를 처리하는 리팩토링 👀 중복코드의 단점 1. 비슷한 코드인지, 완전히 동일한 코드인지 주의깊게 살펴봐야 한다. 2. 코드 변경 시 통일한 모든 곳의 코드를 변경해야 한다. ✍ 사용할 수 있는 리팩토링 기술 1. 함수 추출하기 - 동일한 코드를 여러 메소드에서 사용하는 경우 사용한다. - 무슨 일을 하는 코드인지 알아내려고 노력해야 하는 코드라면, 해당 코드를 함수로 분리하고 함수 이름으로 "무슨 일을 하는지" 표현할 수 있다. ( = 의도를 드러낼 수 있다. ) [ Berfore ] * printParticipants() : 깃헙 커넥션을 만들고 -> 리포지토리를 읽어오고 -> 이슈를 찾아서 -> 이슈에서 코멘트를 돌면서 -> 참석한 사람들의 이름을 담아주고 -> 담은 userName을 출력하는 내용이다. import or.. 이전 1 다음