Notice
Recent Posts
Recent Comments
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
- 자바스크립트 메소드
- 자바스크립트 함수
- 자바스크립트 클로저
- 프로토타입
- 자바스크립트 유효범위
- 자바스크립트 문법
- 콜백
- 리팩토링 기법
- 자바스크립트 정규식
- 의미있는 이름
- Safari
- 정규식
- 자바스크립트 정규표현식
- 네이밍
- 클로저
- 자바스크립트
- 프로토타입 상속
- 자바스크립트 상속
- 변수명
- 자바스크립트 모듈
- 리팩토링이란
- 리팩토링
- 자바스크립트 객체
- 리팩토링기법
- 자바스크립트 배열
- 클린코드
- 정규표현식
- 자바스크립트 콜백
- 모듈
- mysql #mysql최적화 #최적화
Archives
- Today
- Total
개발정리
리팩토링 [북리뷰] 리팩토링이란? 본문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
REFACTORING[북 리뷰]
나쁜 디자인의 코드를 좋은 디자인으로 바꾸는 방법
리팩토링이란
- 명사형
- 소프트웨러를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화없이 내부 구조를 변경하는 것.
- 기본적으로 조금씩 변경하는 것
- 동사형
- 일련의 리팩토링을 적용하여 겉으로 보이는 동작의 변화없이 소프트웨어의 구조를 바꾸다.
- 코드를 효울적이고 통제적으로 만든다.
리팩토링의 목적
- 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것.
- 리팩토링은 겉으로 보이는 소프트웨어의 기능을 변경하지 않아야한다.
- 두 개의 모자
- 소프트웨어를 개발하기 위해 리팩토링을 사용할 때, 두 가지 구별된 작업(기능추가, 리팩토링)을 위해 시간을 나눠야 한다.
- 즉,
- 리팩토링할 때는 리팩토링만,
- 새로운 기능을 추가할 때는 개발만
왜 리팩토링을 해야하는가?
- 리팩토링은 소프트웨어의 디자인을 개선시킨다.
- 코드는 갈수록 구조가 망가진다.
- 이런 코드를 정돈하여 구조를 유지시킨다.
- 리팩토링은 소프트웨어를 더 이해하기 쉽게 만든다.
- 코드의 이해가 프로그램 개발에 큰 기여를 한다.
- 누가봐도 이해하기 쉽도록. 가독성 향상
- 리팩토링은 버그를 찾도록 도와준다.
- 리팩토링은 프로그램을 빨리 작성하도록 도와준다.
- 좋은 디자인은 개발 시간을 단축시킨다.
언제 리팩토링을 해야하는가?
- 삼진규칙
- 처음에는 그냥 개발한다.
- 두 번째로 비슷한 어떤 것을 하게되면 중복때문에 주춤하지만 그냥 중복되도록 한다.
- 세 번째로 비슷한 것을 하게되면 리팩토링한다.
- 기능을 추가할 때 리팩토링 하라
- 코드에 대한 이해를 돕기위해
- 버그를 수정해야할 때 리팩토링 하라
- 버그가 있다는 만큼 코드가 명확하지 않다는 뜻이다.
- 코드리뷰할 때 리팩토링 하라
- 한명의 검토자와 원작자
- 검토자는 변경을 제안한다.
- 둘이서 그 변경이 쉽게 리팩토링 될 수 있는지 결정한다.
리팩토링이 작동하는 이유
- 프로그램은 두 종류의 가치를 가지고 있다.
- 하나는 오늘 당장을 위한 것이고
- 다른 하나는 내일을 위한 것이다.
- 오늘 당장을 위한 프로그래밍은
- 버그 픽스
- 기능 추가
- 기능을 더 많게하여 더 유용하게 만드는 것.
- 내일 할 일은 충분히 알지 못한다.
- 프로그램에 대한 작업을 어렵게 하는 요인
- 읽기 어려운 프로그램은 수정하기 어렵다.
- 중복된 로직을 가지고있는 프로그램은 수정하기 어렵다.
- 실행 중인 코드를 변경해야하는 특별한 동작을 요구하는 프로그램은 수정하기 어렵다.
- 복잡한 조건문이 포함된 프로그램은 수정하기 어렵다.
리팩토링 할 때 문제점
- 데이터베이스
- 비지니스 어플리케이션은 데이터베이스 스키마와 밀접하게 결합되어 있다.
- 객체 모델과 데이터베이스 모델 사이에 별도의 계층을 둔다
- 복잡성은 증가하지만 융퉁성을 제공한다.
- 인터페이스 변경
- 많은 리팩토링이 인터페이스 변경을 요구한다.
- 하지만 공표된 인터페이스는 변경이 힘들다.
- 따라서 이전의 인터페이스를 호출하는 새로운 인터페이스를 만든다.
- 예시 : 자바의 컬렉션
리팩토링의 냄새가 나는 코드
- 중복된 코드
- 긴 메소드
- 거대한 클래스
- 긴 파라미터 클래스
- 확산적 변경
- 산탄총 수술
- 기능에 대한 욕심
- 데이터 덩어리
- 기본타입에 대한 강박관념
- switch문
- 평행 상속 구조
- 게으른 클래스
- 추측성 일반화
- 임시필드
- 메시지 체인
- 미들맨
- 부적절한 친밀
- 다른 인터페이스를 가진 대체 클래스
- 불완전한 라이브러리 클래스
- 데이터 클래스
- 거부된 유산
- 주석
문헌
마틴 파울러, 윤성준 조재박 『REFACTORING』, 대청
'리팩토링' 카테고리의 다른 글
리팩토링 객체간의 기능 이동 기법 (0) | 2017.04.09 |
---|---|
리팩토링 메소드정리 기법 (0) | 2017.04.09 |
Comments