純関数とは?
Dec 27 2022
純粋関数は、予測可能で保守可能なコードを記述するために使用されるコンピューター プログラミングの基本的な概念です。この投稿では、純粋関数の概念と、それらを使用してより良いコードを作成する方法について詳しく説明します。
純粋関数は、予測可能で保守可能なコードを記述するために使用されるコンピューター プログラミングの基本的な概念です。
この投稿では、純粋関数の概念と、それらを使用してより良いコードを作成する方法について詳しく説明します。
では、純関数とは何でしょう?
純粋関数は、いくつかの重要な特徴を持つ関数です。
- 指定された一連の入力に対して常に同じ出力を返します ( Predictable )。
- 副作用はありません。つまり、独自のスコープ外の変数を変更しません。
- 外部の状態やデータには依存しません。
予測可能な:
純粋関数は、特定の入力セットに対して常に同じ出力を返すため、予測可能であると見なされます。
これは、同じ入力セットで純粋な関数を複数回呼び出すと、常に同じ結果が返されることを意味します。
たとえば、次の純関数を考えてみます。
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
console.log(add(2, 3)); // 5
console.log(add(2, 3)); // 5
function add(x, y) {
return x + y + Math.random() * 10;
}
副作用:
副作用は、関数または操作によって引き起こされるプログラムまたはシステムの状態の変化です。
副作用には以下が含まれますが、これらに限定されません。
- グローバル変数の変更 (変更) :
let counter = 0;
function incrementCounter() {
counter++;
}
const user = {
name: 'Ali',
age: 30
};
function setUserName(newName) {
user.name = newName;
}
function saveDataToDatabase(data) {
// db.save(data)
}
async function getDataFromAPI() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return data;
}
function toggleVisibility(elementId) {
const element = document.getElementById(elementId);
if (element.style.display === 'none') {
element.style.display = 'block';
} else {
element.style.display = 'none';
}
}
function printGreeting(name) {
console.log(`Hello, ${name}!`);
}
function divide(x, y) {
if (y === 0) {
throw new Error('Cannot divide by zero');
}
return x / y;
}
外部の状態やデータに依存しません:
この例では、incrementCounter関数はグローバル変数 ( counter) をインクリメントし、その新しい値を返します。この関数は、外部状態 (変数) に依存しているため、純粋でcounterはなく、特定の入力セットに対して常に同じ出力を返すとは限りません。
let counter = 0;
function incrementCounter() {
counter++;
return counter;
}
純粋な関数は関数型プログラミングの重要な原則であり、特定の状況では非純粋な関数よりも多くの利点を提供できます。純粋関数を使用する主な利点のいくつかを次に示します。
- 予測可能性と理解の容易さ: これにより、コードの推論とテストが容易になり、プログラムの他の部分で純粋な関数を簡単に再利用して構成することもできます。
- 分離と副作用の欠如:純粋な関数は、外部の状態やデータと相互作用したり変更したりしないため、副作用はありません。これにより、意図しない依存関係や動作が発生しないため、テストとデバッグが容易になります。
- 同時実行性とスケーラビリティ:純粋な関数は外部の状態やデータに依存しないため、競合状態やその他の同時実行性の問題を心配することなく、同時実行または並列実行できます。これにより、純粋な関数に依存するコードの最適化とスケーリングが容易になります。
- 構成可能性と宣言型プログラミング:純粋関数は関数型プログラミングの重要な原則です。関数型プログラミングは、不変性、ファーストクラス関数、および構成に焦点を当てたプログラミング パラダイムです。純粋な関数を使用すると、より宣言的で構成可能なコードを作成するのに役立ち、コードの推論とデバッグが容易になります。
Redux は、JavaScript アプリケーションの一般的な状態管理ライブラリです。
純粋な関数は、アプリケーションの状態の更新を担当するレデューサーを実装するために使用されるため、特に便利です。純粋な関数を使用して状態を更新することにより、Redux は状態の更新が予測可能で理解しやすく、タイム トラベル デバッグやホット リロードなどの強力な機能も有効にします。
要約:

![とにかく、リンクリストとは何ですか?[パート1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































