機能を関数に分割するときにどういう観点から分割を行うべきなのかとか
プログラムにある機能を追加するときにどういう設計にしておと容易に追加しやすくなるのかとか
プログラムの一部を変更したときに他の変更箇所をできるだけ少なくするにはどうしたらいいのかとか
いうことを学びたいんですどうしたらいいですか