Rustを勉強した時にTraitというものを知ったが、これはRust固有というよりも、そもそもTraitという考え方があることを知ったので調べてみた
こちらの記事が参考になった qiita.com
プログラミングにおけるtraitは、主にオブジェクト指向プログラミング(OOP)や型システムを持つ言語で使用される概念
traitは、クラスやオブジェクトに特定の振る舞い(メソッドやプロパティ)を追加するためのモジュール的な機能として使われる
直接インスタンス化できるわけではなく、他のクラスや型に適用することでコードの再利用性を高めることができる
メリット
コードの再利用性
共通の振る舞いをまとめることで、同じコードを複数回書く必要がなくなる多重継承の代替
複数のtraitを1つのクラスにミックスインできる(多重継承が使えない言語でも利用可能)柔軟性
既存のクラスに振る舞いを追加しやすい
注意点
- 多くの
traitをミックスインすると複雑な依存関係が生まれ、デバッグが難しくなる可能性がある - 実装の競合(同じ名前のメソッドを複数の
traitで持つ場合)が発生することがある
「コードのモジュール化」と「柔軟な振る舞いの付与」がtraitの主な目的とわかった
ただ、ただ一箇所にまとめただけのモジュール化になりかねないので注意が必要だと思った