Mais conteúdo relacionado
Semelhante a JavaScriptで味わう! 関数型プログラミングのメリット!! (20)
JavaScriptで味わう! 関数型プログラミングのメリット!!
- 2. for {
Type <- Person
Name <- Keigo Magami
Github <- k5jp1015
Job <- Server Side Engineer
Scala Experience <- 5 Month
Hobby <- Training(筋トレのことです♪)
} yeild Self Introduction(自己紹介)
※上はScalaにおける糖衣構文をパクりましたw
- 9. let cityInfo ="; // 1.
if(existKey){ // 2.
cityInfo =
countryData[key]; // 3.
}else{
cityInfo = “NoData" ; // 4.
}
左のソースがやっていること
1.変数「cityInfo」を定義する
2.引数の条件判定をする
3.条件が正ならcountryDataからkeyに対応する
valueをcityInfoに設定
4.条件が負なら”NoData”なる文字列をcityInfoに設定
役割が4つもある(単一責任の原則に反している)
これ役割多くないですか?
変更する理由が1つ以上有る!
→なので、個別にモジュール化!!
1.コードのモジュール性が高まる
→具体的には
- 14. 作成したモジュールを組み合わせる
let getCityInfo = (flg) => {
return(key,obj) => {
return abstractFuncIfElse(getValue(key)(obj),setNonData)(flg);
}
};
変数「existKey」の条件判定をする
条件が正ならcountryDataからkeyに対応するvalueを取得
条件が負なら”NoData”なる文字列を取得
単一責任の原則を担保している3つのモジュールを組み合わせることで、
要件を新たな関数を作ることが出来た!
- 16. できたモジュールを使ってみよう!
let countryData = {
japan: "tokyo,37843",
china: "beijing,23416",
usa: "new york,20630”
};
getCityInfo(true)("japan",countryData);
→”tokyo,37843"が出力されるよ!
- 21. let abstractFuncIfElse = (funcOnTrue,funcOnFalse) => {
return(flg) => {
if(flg){
return funcOnTrue;
}else{
return funcOnFalse;
}
}
};
let isEven = (number) => { return number % 2 === 0};
let checkEven = (num) => {
return abstractFuncIfElse('◯','✕')(isEven(num));
};
- 30. 副作用が存在するケース
let data = {1:’js’,2:’scala’,3:’java’};
// どこに副作用があるでしょうか?
let getValue = (key) => {
let returnValue = data[key];
delete data[key];
return returnValue;
};
- 31. 副作用が存在するケース
let data = {1:’js’,2:’scala’,3:’java’};
// 答え合わせ
let getValue = (key) => {
let returnValue = data[key];
delete data[key]; // ←値の取得以外の処理をしている
return returnValue;
};