6.8. ๋งค๊ฐ๋ณ์ ๊ฐ์ฒด ๋ง๋ค๊ธฐ (Introduce Parameter Object)
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 |