필기를 재구성하다
1. 함수 추출(Extract Methods)은 함수에 코드 세그먼트를 넣고 함수 이름이 그 함수의 용도를 설명하도록 한다.
String name = request.getParameter("Name");
if(!isNullOrEmpty(name)){
......
}
String age = request.getParamter("Age");
if(!isNullOrEmpty(name)){
......
}
private boolean isNullOrEmpty(final String string){
if(string!=null && string.length()>0){
return true;
}else{
return false;
}
}
2. 함수 내연화(Inline Method)
만약 함수의 논리가 너무 간단하다면, 그것을 호출하는 코드로 이동시켜 이 함수를 취소한다
int getRating(){
return (_numberOfLateDeliveries>5) ? 2 : 1;
}
3. 임시 변수를 인라인화(Inline Temp)
변수가 간단한 표현식에 한 번 부여되면 변수가 그 표현식으로 바뀐다
return (anOrder.basePrice()>1000);
4. 임시 변수 대신 질의(Replace Temp with Query)
if(basePrice()>1000)
return basePrice()*0.95;
else
return basePrice()*0.98;
...
double basePrice(){
return _quantity*_itemPrice;
}
5. 해석 변수 가져오기(Introduce Explaining Variable)
복잡한 표현식 결과를 임시 변수에 넣고 변수 이름으로 표현식의 용도를 설명하다
boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1;
boolean isIEBrower = browser.toUpperCase().indexOf("IE") > -1;
boolean wasResized = resize > 0;
if(isMacOs && isIEBrowser && wasInitialized() && wasResized){
....
}
6. 임시 변수 해부(Split Temporary Variable)
하나의 임시 변수는 여러 번 값을 부여받는다. (순환에 있지 않다) 매번 값을 부여할 때마다 독립된 임시 변수를 만들어야 한다
double temp = 2(_height+_width);
System.out.println(temp);
temp=_height*_width;
System.out.println(temp);
재구성:
double perimeter = 2*(_height+_width);
System.out.println(perimeter);
double area = _height*_width;
Sytem.out.println(area);
7. 중첩된 조건문 대신 위계 문구(Replace Nested Conditional with Guard Clauses)
함수 중 조건문은 정상적인 실행 경로를 보기 어려우므로, 위문구로 끼워 넣은 조건을 대체한다
double getPayAmount(){
if(...) return deadAmount();
if(...) return separatedAmount();
if(...) return retiredAmount();
return normalPayAmount();
}
8. 분해 조건 표현식(Decompose Conditional)은 복잡한 조건문 분기에서 별도의 함수를 추출합니다.
if(date.before(SUMMER_START) || date.after(SUMMER_END))
charge = quantity * _winterRate + _winterServiceCharge;
else
charge = quantity * _summerRate;
----------------------------------------
if(notSummer(date))
charge = winterCharge(quantity);
else
charge = summerCharge(quantity);
[불량 코드]
=========================================
1. 중복 코드(Duplicated Code)
2. 너무 긴 함수(Long Method)
3. 너무 큰 클래스(Large Class)
4. 너무 긴 매개변수 열(Long Parameter List)
5. Divergent Change(Divergent Change): 클래스가 서로 다른 이유로 수정됩니다.클래스를 여러 개로 나누고, 클래스마다 하나의 변화만으로 수정합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.