データ指向プログラミング
data-oriented programming
gpt-4.icon
データ指向プログラミング(Data-oriented Programming)は、コードの状態を制御するためにデータを中心に置くプログラミングパラダイムです。このアプローチでは、データ構造とそれに関連する操作は分離され、データ自体が中心となります。
オブジェクト指向プログラミング(OOP)と比較すると、OOPはデータとそれを操作するメソッドをカプセル化して1つのオブジェクトとして扱います。一方、データ指向プログラミングでは、データと操作を分離します。これにより、データを操作する複数の方法を共有し、組み合わせることが可能になります。
関数型プログラミング(FP)と比較すると、FPでは不変性と純粋な関数(副作用のない関数)を強調します。データ指向プログラミングもこれらの概念を支持しますが、データの中心性と分離が強調されます。
以下に、TypeScriptを使用したデータ指向プログラミングのサンプルコードを示します。
code:ts
// データ定義
type User = {
name: string,
age: number
}
// データ操作関数
function incrementAge(user: User): User {
return {...user, age: user.age + 1};
}
function setName(user: User, name: string): User {
return {...user, name: name};
}
// データ使用例
let user: User = {name: 'John Doe', age: 20};
user = incrementAge(user);
user = setName(user, 'Jane Doe');
この例では、User型のデータとそれを操作する関数が分離されています。incrementAgeやsetNameなどの関数は、データを直接変更するのではなく、新しいデータを生成します。これにより、データの不変性が保たれ、副作用のないコードを書くことが可能になります。
このコード例だけだと、OOPと関数型の悪いとこ取りにしか見えないがmrsekut.icon