3-2-4まではそのまま
Twitter と Facebook の処理を共有するためにSNSSharedという共有クラ スを作成し、パラメータで切り替えて使っている。 パラメータを名前で使うために列挙型で定義している。
常に関数の引数に定数を用いるのは間違い。 毎度のパラメータ指定ではなく、一部を定数にした呼び出しを行う convinience 関数を定義する。 さらに、プログラムの共有はクラスの継承で行う。 そのため、SNSというクラスを作成し、それを継承した Twitter, Facebook というクラスを作成する。 そこで、メソッドを convenience にする。
また、メソッド呼び出し前にメソッドの引数をプロパティを定義するのも 誤り。 メソッド呼び出しの基本は必要な情報すべてを引数に指定すること。 毎回定数を指定するのであれば、convenience 関数とするか、継承したク ラス内に定数を引き継ぐ。
なおpresentViewController は互換性の問題があって、そのままだとエラー になります。 presentメソッドに変更されました。