はじめに
みなさんは普段コードを書いていて、「この処理、他の場所にも書いたな...」という経験はありますか?私はたくさんあります()
重複したコードが増えてくると、後からその箇所を修正するときに対応箇所が増えてしまうため、できれば重複したコードは避けたいです。
オブジェクト指向では、こういう課題を解決するために、データとそのデータに関係するロジックは同じクラスに入れるという考え方をします。
ロジックをクラスに入れる
例えばセット商品の合計金額の計算の処理を書いていたとします。
セット商品はメイン商品とサブ商品から構成されるとします。
calc.scala
def calcTotalPrice(mainPrice: Int, subPrice: Int) = {
mainPrice + subPrice
}
この処理はさまざまな場面で利用される予定です。
そこで、次のようにクラスに入れます。
ProductPrice.scala
case class ProductPrice(mainPrice: Int, subPrice: Int) {
def calcTotalPrice = {
mainPrice + subPrice
}
}
このようにクラスに入れることで、合計金額を計算したいときは、このクラスのメソッドを呼び出せばよくなります。
これにより、合計金額の計算ロジックはProductPriceクラスに閉じ込められ、ロジックの重複を防ぐことが出来ます。
さいごに
重複したロジックを減らすには、オブジェクト指向ではクラスのメソッドとして定義する方法を紹介しました。
次回はクラスの中身が大きくなってきた場合はどうするかについて紹介する予定です。
この記事はシステム設計について学習中のエンジニアが書いたものです。
間違い・質問などありましたらお気軽にコメントください。