関数式プログラミング定義、純関数
8774 ワード
成功したプログラミング
1.すべてのプログラミングモードはプログラミングを成功させるために存在する
2.成功したプログラミングはプログラムを作る仕事です.
3.良いプログラムは良好な可用性、性能、拡張性、計画変更に対する対応能力などを持っている.
4.これらの作業を効率的かつ効率的に完了することは、成功したプログラミングです.
かんすうしきプログラミング関数式プログラミングは、プログラミングに成功するために副作用を憎み、組合せ性を強調するプログラミングパターンである. 付随効果が嫌いです.=>純関数を作成します.
(return値以外は外部とのコミュニケーションができません)
組み合わせを強調します.=>モジュール化レベルを向上させる.
純関数=>エラーを低減し、安定性を向上させる.
モジュール化の度合いが高い.=>生産性を高める.
得られる効果->安定、メンテナンスが容易、組合せ性が良い(モジュール化)
なぜadd関数が純粋な関数なのか:
1.同じパラメータが与えられた場合、常に同じ値を返します.
2.レリーフ効果なし(returnに外部効果を加えない)
**純関数から返される値は、評価ポイント->非純関数から返される値に依存します.
ex)
元の値を保持して新しい値を作成し、値をコピーして変更した新しい値を返します.
関数を作成します.
jsでは、関数は1級関数です.
すなわち,関数を値として扱うことができる.
関数を変数に含めることもできます.
変数の関数に値を割り当てることもできます.
パラメータとして送信することもできます.
1.すべてのプログラミングモードはプログラミングを成功させるために存在する
2.成功したプログラミングはプログラムを作る仕事です.
3.良いプログラムは良好な可用性、性能、拡張性、計画変更に対する対応能力などを持っている.
4.これらの作業を効率的かつ効率的に完了することは、成功したプログラミングです.
かんすうしきプログラミング
(return値以外は外部とのコミュニケーションができません)
組み合わせを強調します.=>モジュール化レベルを向上させる.
純関数=>エラーを低減し、安定性を向上させる.
モジュール化の度合いが高い.=>生産性を高める.
function add(a, b) {
return a + b;
}
console.log(add(10, 5));
この関数は、いつどこで出力されても同じ値を返します.得られる効果->安定、メンテナンスが容易、組合せ性が良い(モジュール化)
なぜadd関数が純粋な関数なのか:
1.同じパラメータが与えられた場合、常に同じ値を返します.
2.レリーフ効果なし(returnに外部効果を加えない)
**純関数から返される値は、評価ポイント->非純関数から返される値に依存します.
ex)
var c = 10;
function add2(a, b) {
return a+b+c;
}
console.log(add2( 10, 2 )); //22
c = 20;
console.log(add2( 10, 2 )); //32
*同じパラメータを使用すると、異なる値になります.純水じゃないfunction add3(a, b) {
c = b; // 리턴값으로 소통하는 거 외에 외부에 영향을 미치는 값이 있으면 부수효과가
// 발생했다라고 하고 순수함수가 아니라고 함
return a + b;
}
console.log('c: ',c); // 20
console.log(add3(20, 30));
console.log('c: ',c); // 30
var obj1 = { val : 10 }
function add4(obj, b) {
obj.val += b;
}
console.log( obj1.val); //10
add4(obj1, 20);
console.log( obj1.val); //30
オブジェクトを操作できます!元の値を保持して新しい値を作成し、値をコピーして変更した新しい値を返します.
関数を作成します.
var obj1 = { val : 10 };
function add5(obj, b) {
return { val : obj.val + b }
}
console.log(obj1.val) // 10
var obj2 = add5(obj1, 20);
console.log(obj2.val) // 30
値を変形したり値を処理したりする場合、元の初期化値に触れず、すべての値を変更せず、外部状態を変更せず、パラメータとして受信した値を直接変更せず、値を処理するプログラミング-->>純関数の利用jsでは、関数は1級関数です.
すなわち,関数を値として扱うことができる.
関数を変数に含めることもできます.
変数の関数に値を割り当てることもできます.
パラメータとして送信することもできます.
Reference
この問題について(関数式プログラミング定義、純関数), 我々は、より多くの情報をここで見つけました https://velog.io/@ksung1889/성공적인-프로그래밍テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol