UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【用語】Traitとは

Rustを勉強した時にTraitというものを知ったが、これはRust固有というよりも、そもそもTraitという考え方があることを知ったので調べてみた

こちらの記事が参考になった qiita.com

プログラミングにおけるtraitは、主にオブジェクト指向プログラミング(OOP)や型システムを持つ言語で使用される概念

traitは、クラスやオブジェクトに特定の振る舞い(メソッドやプロパティ)を追加するためのモジュール的な機能として使われる

直接インスタンス化できるわけではなく、他のクラスや型に適用することでコードの再利用性を高めることができる

メリット

  1. コードの再利用性
    共通の振る舞いをまとめることで、同じコードを複数回書く必要がなくなる

  2. 多重継承の代替
    複数のtraitを1つのクラスにミックスインできる(多重継承が使えない言語でも利用可能)

  3. 柔軟性
    既存のクラスに振る舞いを追加しやすい

注意点

  • 多くのtraitをミックスインすると複雑な依存関係が生まれ、デバッグが難しくなる可能性がある
  • 実装の競合(同じ名前のメソッドを複数のtraitで持つ場合)が発生することがある

「コードのモジュール化」と「柔軟な振る舞いの付与」がtraitの主な目的とわかった

ただ、ただ一箇所にまとめただけのモジュール化になりかねないので注意が必要だと思った