TOP
리팩토링이란 무엇입니까?
설명
리팩토링 (Refactoring) – 외부 동작을 변경하지 않고도 더 쉽게 이해하고 더 빠르게 수정할 수 있도록 소프트웨어(소프트웨어)의 내부 구조를 변경했습니다. 또한 소프트웨어의 외부 동작을 변경하지 않고 일련의 리팩토링을 적용하여 소프트웨어를 재구성하는 것입니다.
리팩토링의 장점:
- 리팩토링은 소프트웨어 디자인을 향상시킵니다. 시간이 지남에 따라 코드에 많은 추가 변경이 이루어지며 소프트웨어는 시간이 지남에 따라 구조를 잃습니다. 구조의 손실은 누적 효과가 있습니다. 코드에서 디자인을 보는 것이 어려울수록 유지하기가 더 어렵고 더 빨리 무너집니다. 또한 이러한 변경으로 인해 코드가 중복되고 중복되어 시스템을 이해하고 수정하기가 더욱 어려워집니다.
- 리팩토링은 소프트웨어 코드를 더 이해하기 쉽게 만듭니다.
리팩토링을 수행해야 하는 경우:
- 새로운 기능이 추가되면;
- 오류가 정정(수정)된 경우
- 코드 검토 중.
코드에서 나쁜 냄새가 난다 (Smells Catalog) :
- 코드 복제
- 긴 방법
- 큰 수업
- 긴 매개변수 목록
- 다양한 수정
- 샷 촬영
- 부러워하는 기능
- 데이터 블록
- 원소 유형에 대한 집착
- Switch 운영자
- 모방의 병렬 계층
- 게으른 수업
- 추측(이론) 커뮤니티
- 임시 필드
- 메시지 스레드
- 대리인
- 부적절한 근접성
- 다양한 인터페이스를 갖춘 대체 클래스
- 불완전한 도서관 수업
- 데이터 클래스
- 코멘트
가능한 리팩토링 옵션
-
Moving Features Between Objects (강체 간 하이다 하다):
- Move Method (메소드 가자) – 메소드가 너무 길거나 코드가 포함된 경우 별도의 메소드를 분리하세요.
- Move Field (이동장) – 해당 필드가 정의된 위치보다 다른 클래스에서 더 자주 사용되는 경우 수행됩니다.
-
Organizing Data (데이터 배열):
- Encapsulate Field 캡슐 - OOP의 주요 원칙 중 하나는 캡슐화 또는 데이터 캡슐화입니다. 데이터를 공개함으로써 객체는 데이터 소유자 모르게 해당 값을 읽고 변경할 수 있습니다. 그러므로 우리는 그러한 분야를 닫고 접근 방식을 제공합니다.
- Encapsulate Collection (수집캡슐) - 교실에는 종종 phốbon 모리이가 포함되어 있습니다. 이 컬렉션은 배열, 목록, 집합 또는 벡터일 수 있습니다. getter 메소드는 컬렉션 객체 자체를 반환해서는 안 됩니다. 클라이언트는 컬렉션을 소유한 클래스에 대한 지식 없이도 컬렉션의 내용을 수정할 수 있기 때문입니다. 따라서 메소드가 반환하는 값을 읽기 전용으로 만들고, 메소드를 추가/삭제하기 위한 요소를 생성해야 합니다.
-
Composing Methods (코드 추출 및 조합):
- Extract Method (메소드 가자) – 그리고 화하수 재이 CODE 자다이 재이 자니다 자이 자다을 이리을 다이의이니다 별도의 메소드로 넣습니다. 따라서 메서드 이름이 주석을 대체합니다.
- Inline Method (메소드 이베마) – 때로는 메서드 본문을 이를 호출하는 코드로 이동하는 것이 유용할 수 있습니다. 때때로 메소드 본문에는 메소드 이름 자체만큼 많은 설명이 필요합니다. 그 외에도 여러 가지 방법이 있어서 구조가 성공하지 못하는 상황이 있을 수 있으므로 하나의 일반적인 방법으로 모두 결합한 후 다른 방법으로 분리하는 것이 좋습니다.
- Inline Temp (임시 다양한 insert) – 단순 표현식은 한 번만 할당된 임시 변수를 대체합니다. 때때로 이러한 변수는 다른 리팩토링을 방해합니다.
- Replace Temp with Query (임시 다양한 마이스 보리로 자다) – 임시변수를 이용하여 수식의 값을 저장할 때 사용된다. 이 경우 표현식을 메소드로 변경하십시오.
- Split Temporary Variable (임시 다양한 구분) – 단일 임시 변수를 사용하여 여러 결과를 다른 결과에 할당하는 경우 적용됩니다(루프에 사용된 변수가 결과를 집계하는 변수가 아닌 경우). 이 경우 각 할당에 대해 별도의 변수를 만듭니다.
-
Simplifying Conditional Expressions (设计他体育设计设计设计):
- Decompose Conditional (设计设计안전성) – 아리부 하이스 지이(if-then-else)이 자이 나의 무게이다. 조건(if), then, else의 일부를 별도의 메소드로 대체합니다. 이유의 분기를 이해하는 데 도움이 되며, 메소드 이름은 코드의 목적을 명확하게 해줍니다.
- Consolidate Conditional Expression (设计介乐设计) - 여러 번 테스트를 수행하면 동일한 결과를 제공하는 조건이 수행됩니다. 모든 테스트는 단일 조건이나 방법과 결합되어야 합니다.
- Consolidate Duplicate Conditional Fragments (중복라리스부이트이트) – 조건의 모든 부분에 동일한 조각이 존재합니다. 이 코드 조각은 외부로 이동되어야 합니다.
- Remove Control Flag (제어 플래그 제거) – 일련의 논리에서 제어 플래그 역할을 하는 변수가 있습니다. 대신 BREAK 또는 RETURN을 사용하세요.
- Replace Conditional with Polymorphism (연산자를 조건식으로 바꾸세요) – 객체 유형의 동작은 운영자의 조건에 따라 달라집니다. 조건 연산자의 각 분기는 하위 클래스의 오버로드된 메서드로 이동되어야 합니다. 소스 코드