LoginSignup
1
1

More than 3 years have passed since last update.

プログラムを書くときの注意点:その1

Last updated at Posted at 2020-08-17

【概要】

1.結論
2.SOLID原則とは何か
3.単一責任の原則はどう使うのか
4.なぜ単一責任の原則が必要か
5.ここから学んだこと

1.結論

単一責任の原則にも従う!

2.SOLID原則とは何か

●SOLID原則とは、
i)単一責任の原則:1つのclassに1つの役割を
ii)オープン/クローズドの原則:追加機能はOK,ただ修正はせずに
iii)リスコフの置換原則:親クラスは子クラスと同じ動きに
iv)インターフェース分離の原則:利用用途に応じた最小限の動きに
v)逆依存性の原則:破壊的変更をさせるな

の英語名の頭文字を取ったものです!
(ここでは分かり易く書きたいため、英語名は省略しています)

3.単一責任の原則はどう使うのか

あくまで原則なので、基本的な考え方の部分になります。
なので例を交えての紹介になります。

例えばご紹介した、(”3つの値の正誤を確かめる条件式~演算子,論理積~
”)https://qiita.com/taka_no_okapi/items/dd92ab3f74cd28d3b364
のプログラムの”マシーン”に”人がお金を投入する”というプログラムをさせたいとします。

user1.rb
class User1
  def initialize(many_money)
    @money = many_money
  end

  def money
    @money
  end

  def choose_drink
    gets.to_i
  end
end

上記のプログラムをマシーンが書いてあるファイルに一気に書いてもいいですが、それですとマシーンが同じ数字を書く機能を持ちつつ人がお金を投入するシステムまで導入し1つのclassに2つの役割が入ってしまいます。
であれば”class Machine” “class user1”で
マシーン(クラス)は1つの役割、ユーザー(クラス)は1つの役割
にした方が保守性・拡張性・可読性が飛躍的に高まります。

4.なぜ単一責任の原則が必要か

結論としては、プログラミングを書く際の要は以下の
3つに集約されると思っています。

Ⅰ)保守性:修正(エラー発見のしやすさ)・管理のしやすさ
Ⅱ)拡張性:追加機能実装のしやすさ
Ⅲ)可読性:記述のわかりやすさ
が必要だと考えております。

上記3つのことは自分が他の4つの原則を説明する際に
同じことを言うので、5つの原則のうちどれかを読んでいただくと
結論はすべてこの3つに収まります。

つまり、上の3つを叶えるには
単一責任の原則に”も(他の4つの原則もあるので)”従う!!

5.ここから学んだこと

i)単一性の原則は非常に理解しやすく、すぐに適応できるので
意識するだけでプログラムの考えを受け入れやすかったです!

ii)物体ごと(上記の例ですと、user1とMachine)だけではなく
機能ごと(Machineであれば同じ数字を揃える意外に、景品を選んでくれる機能など)でも分けたほうがプログラムしやすいです!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1