skillup

技術ブログ

アーキテクト設計全般 プログラミング全般

abstract,interface,traitなどについて

投稿日:

昔はようわからなかったabstract(継承全般)、interface、traitの使い分けなどについて。

今の現場でいろいろと考えることがあり、自分なりにいろんな方の知見を共有できたので、メモしておこうと思います。

abstract(継承全般)

いわゆる継承ですね。abstractのこともあれば、単純にextendsの継承を使う場合もあります。

使うケースとしては、以下のようなケースですね。

  • 親と子に関してプログラムの骨組みそのものが近いこと(語彙力なくてなかなか良い言葉が思い浮かばない。。。)
  • abstractを使う場合については子で分岐させるような処理がある場合(ifつかうより、子供で処理を分岐させた方が良い)

interface

abstractとの使い分けが一時不明瞭でした。

自分の中では以下のように考えてます。

  • 親子関係などがあるかどうか(プログラム全体の主従関係)は関係ない
  • あくまでメソッド名と引数と戻り値の型を統一させたい場合に使う

単純なモデルなんかで従属関係はないんだけど、便宜上、メソッドと引数、戻り値を統一させたい場合に使うなんてケースがありました。

trait

直近プロジェクトでちょこちょこ使いました。

  • 継承するほどではないけど、一部汎用的なメソッドを使いたい
  • ワンポイント的な形のメソッドなどで使われることが多い

意外にうまく使えるケースが多く、なかなかつかいどころいかんによっては効果を発揮してくれます。

-アーキテクト設計全般, プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

設定ファイルの置き場所

一般的にレベルの高いソースとは保守性が高いものを指します。特にWEB系ですと仕様変更がしょっちゅうなので変更があったときにいかに少ない工数で対応できるかが大切です。 保守性をあげる工夫はいろいろありま …

no image

データ構造の基礎知識 中編 ハッシュ

前回の続きです。 前回は配列、連結リストについて学習したので今回はハッシュについて学習します。 Contents1 ハッシュとは?1.1 メリット1.2 デメリット ハッシュとは? key-value …

no image

テストコードの粒度に関して

テストコードを書いていることの悩みの1つにテストコードをどの粒度で書けばいいのか、ということがあります。 例えばバッチの場合、大きく分けると エントリーポイントのFeatureテスト Unitテスト( …

no image

読みやすいコードについて

コードリーディングにおいて聖典となっているリーダブルコードについて読んでいこうかと。 ただ読んでいくだけではつまらないので、自分なりの考え方も書いていきます。 Contents1 優れたコードの定義1 …

no image

ここ1年ぐらいで再確認したネタなど

今の現場では比較的、いわゆるモダンな環境で開発をしていることもあり、非常に勉強になります。 今の現場に入る前に10年近くはPHPをやっていますが、まだまだ知らないこと(といいますか新しいことがふえてき …

アーカイブ