분류 전체보기 (96) 썸네일형 리스트형 리팩터링 2판 챕터12 - 상속 다루기 1. 메서드 올리기 (↔️ 메서드 내리기) 메서드의 코드가 중복된다면, 해당되는 중복 메서드를 슈퍼클래스로 올리자. 2. 필드 올리기 (↔️ 필드 내리기) 기법1과 마찬가지로 중복되는 필드가 있다면 슈퍼클래스로 올리자. 3. 생성자 본문 올리기 서브 클래스들이 중복되는 메서드를 가지고 있다면 슈퍼클래스로 올리자. 4. 메서드 내리기 (↔️ 메서드 올리기) 특정 서브클래스에만 관련된 메서드는 해당 클래스에만 추가하는 것이 좋다. 5. 필드 내리기 (↔️ 필드 올리기) 서브 클래스에서만 사용하는 필드는 해당 서브클래스에서만 쓰자. 6. 타입 코드를 서브클래스로 바꾸기 *타입코드란? 객체를 식별하기 위한 코드 타입코드가 매력적인 이유 - 조건에 따라 다르게 동작할 수 있는 다형성을 가지고 있다. - 특정 타입.. 리팩터링 2판 챕터11 - API 리팩터링(2) 8. 생성자를 팩터리 함수로 바꾸기 생성자는 객체를 초기화한다. 생성자에는 제약이 몇가지 있는데, 생성자의 이름은 고정되어 있다. 서브클래스의 인스턴스나 프락시를 반환할 수 없다. 생성자를 호출하려며 특별한 연산자(주로 new)를 사용해야한다. 팩터리 함수에는 이러한 제약이 없다. *팩터리 함수란? 객체를 반환하는 함수이다. // 생성자 const engineer = new Employee(document.engineer, "E"); // 팩터리 함수 const engineer = createEngineer(document.engineer); function createEngineer(name){ return new Employee(name, "E"); } 9. 함수를 명령으로 바꾸기 (↔️ 명령을 함수.. 리팩터링 2판 챕터11 - API 리팩터링(1) 1. 질의 함수와 변경함수 분리하기 질의 함수란 7.4에서 처음 나왔는데, 값을 계산하여 리턴시키는 함수다. '겉보기 부수효과'가 없는 반환 함수를 추구해야한다. 겉보기 부수효과란? 입출력 변경이나, 데이터 값이 변형되는 경우를 말한다. * 명령-질의 분리 (질의함수는 모두 부수효과가 없어야 한다.) https://martinfowler.com/bliki/CommandQuerySeparation.html 2. 함수 매개변수화하기 함수의 로직이 비슷한 경우, 매개변수 값만 바꿔서 여러 곳에 적용하도록 하자. 그러면 함수의 유용성이 커진다. 범위를 다루는 함수는 중간 대역부터 리팩터링을 시작하고, 대역의 상한를 쓸 때는 Infinity를 이용하자. 3. 플래그 인수 제거하기 불리언 플래그는 코드를 읽을 때 .. 리팩터링 2판 챕터10 - 조건부 로직 간소화(2) 5. 특이 케이스 추가하기 특정 값에 대해서 똑같은 동작을 수행하는 코드가 반복되면, 하나로 통일하는 것이 좋다. 데이터를 읽기만 한다면, 리터럴 객체 형태로 준비. 동작 수행이 필요하다면, 메서드를 담은 객체를 생성. 6. 어서션 추가하기 어서션이란? 항상 참이라고 가정하는 조건부 문장이다. 어서션은 프로그램이 어떤 상태인지 다른 개발자에게 알려주는 도구가 될 수 있다. 반드시 참이어야하는 것만 검사하자. 7. 제어 플래그를 탈출문으로 바꾸기 모든 함수의 return문은 하나가 아닐 수도 있다. 할 일을 마쳤다면 함수를 나가도록 하자. 저자는 중첩 함수를 보호 구문으로 바꾼 것과 같이, 굳이 플래그를 쓰는 것보다는 탈출문으로 깔끔하게 표현하는 것이 좋다는 입장이다. 리팩터링 2판 챕터10 - 조건부 로직 간소화(1) 1. 조건문 분해하기 조건문이 길면 의도를 제대로 파악하기가 힘들다. 함수 호출로 바꿔주자. 2. 조건식 통합하기 조건식을 통합하고 함수 추출하기까지 진행하면 코드가 말하는 바(의도)가 더 분명해진다. 3. 중첩 조건문을 보호 구문으로 바꾸기 *보호구문이란? 비정상 조건을 if에서 검사한 다음, 함수에서 바로 빠져 나온다. 정상 조건을 여러 번 중첩으로 검사하는 것이 아니라 비정상 조건을 하나씩 검사하는 검사 구문. 보호구문 사용 전 /* 2021년 유방암 건강검진 대상자를 구하는 코드를 만들어보자. 홀수 년도 생이고 만 40세 이상 여성이라면 대상자이다. */ function is2021HealthCheckupSubject(person){ if(person.isMale){ return false; }e.. 리팩터링 2판 챕터9 - 데이터 조직화 1. 변수 쪼개기 변수 하나에 대입이 두 번 이상 이루어진다면 여러 가지 역할을 수행한다는 신호이고, 이런 변수는 쪼개야한다. 2. 필드 이름 바꾸기 필드 이름은 데이터 구조에서 중요하다. 필드 이름을 바꿔서 프로그램을 이해하는 데에 도움이 되어야 한다. 3. 파생 변수를 질의 함수로 바꾸기 가변 데이터는 연쇄효과를 일으키기 때문에 골칫거리다. 그래서 가변 데이터의 유효범위를 좁여야만 한다. 변수를 질의 함수로 바꾸면 유효 범위를 좁힐 수 있다. 4. 참조를 값으로 바꾸기 객체를 다른 객체에 중첩하면 참조 또는 값으로 취급할 수 있다. 또한 객체는 불변이기 때문에 다루기 좋다 5. 값을 참조로 바꾸기 같은 데이터를 복제해서 사용하면 데이터를 갱신할 때 문제가 된다. 그럴 때는 데이터를 참조로 바꿔주는 것.. 이전 1 ··· 8 9 10 11 12 13 14 ··· 16 다음