1. 적당한 데이터 구조를 만든다
- 클래스나 객체로 만든다.
2. 테스트한다.
3. 함수 선언 바꾸기로 새 데이터 구조를 매개변수로 추가한다.
4. 테스트한다.
5. 함수 호출 시 새로운 데이터 구조 인스턴스를 넘기도록 수정한다. 하나씩 수정할 때마다 테스트한다.
6. 기존 매개변수를 사용하던 코드를 새 데이터 구조의 원소를 사용하도록 바꾼다.
7. 다 바꿨다면 기존 매개변수를 제거하고 테스트한다.
정상 범위를 벗어난 측정값 찾아내기
클래스로 범위를 저장해둔다면, 온도가 허용 범위 안에 있는지 검사하는 메서드를 클래스에 추가할 수 있다.
// 변경전
const station ={
name: "zb1",
readings:[
{temp:47, time:"2012-12-12 12:12"},
{temp:37, time:"2012-12-14 14:12"},
]
}
function readingsOutsideRange(station, min, max){
return station.readings
.filter(r=>r.temp<min||r.temp>max);
}
alerts = readingsOutsideRange(station,
operatingPlan.temperatureFloor, operatingPan.temperatureCeiling); //최저온도 최고온도
> class로 범위 클래스 생성
// 1) 매개변수에 추가
class NumberRange {
constructor(min,max){
this._data = {min:min, max:max};
}
get min(){return this._data.min;}
get max(){return this._data.max;}
}
function readingsOutsideRange(station, min, max, range){
return station.readings
.filter(r=>r.temp<min||r.temp>max);
}
alerts = readingsOutsideRange(station,
operatingPlan.temperatureFloor, operatingPan.temperatureCeiling, null);
// 2) 매개변수 추가 => 객체 생성 => 객체 전달 => 다른 매개변수 제거
class NumberRange {
constructor(min,max){
this._data = {min:min, max:max};
}
get min(){return this._data.min;}
get max(){return this._data.max;}
}
function readingsOutsideRange(station, range){
return station.readings
.filter(r=>r.temp<range.min||r.temp>range.max);
}
const range = new NumberRange(operatingPlan.temperatureFloor, operatingPlan.temperatureCeiling);
alerts = readingsOutsideRange(station, range);
> readingsOutsideRange를 NumberRange 클래스에 넣을 수 있다.
class NumberRange {
constructor(min,max){
this._data = {min:min, max:max};
}
get min(){return this._data.min;}
get max(){return this._data.max;}
contains(arg){
return (arg>=this.min && arg<=this.max);
}
}
function readingsOutsideRange(station, range){
return station.readings
.filter(r=>!range.contains(r.temp)); //이 부분이 간결해짐
}
const range = new NumberRange(operatingPlan.temperatureFloor, operatingPlan.temperatureCeiling);
alerts = readingsOutsideRange(station, range);
6.10. 여러 함수를 변환 함수로 묶기 (0) | 2021.09.26 |
---|---|
6.9. 여러 함수를 클래스로 묶기 (0) | 2021.09.26 |
6.6. 변수 캡슐화하기 (Encapsulate Variable) (0) | 2021.09.26 |
6.3. 변수 추출하기 (0) | 2021.09.26 |
6.1. 함수 추출하기 (0) | 2021.09.26 |
댓글 영역