Extension集を作成すると便利だという話【Swift4】

    皆さんこんにちは、ロンアンです。

    開発者の皆さんに、自分のExtension集を作成することで便利になり開発も速くなるというお話をしたいと思います。
    このブログでは例としてSwift4版を使います。

    プロジェクトにおいて、似ている機能が二つ以上出てきたり、それから他のプロジェクトで同じ機能が必要になることは多いですよね。
    色な対応方法がありますが今回はextensionを紹介します。
    Extensionを使うとどんないい事があるのでしょうか?

      *以前作成した機能を再使用できるため、開発が速くなります。
      *再使用することによって調整されて不具合がなくなります
      *ソースコードがきれいになります。

    例として画像のalphaをチェックする機能でExtensionを理解してみましょう
    普通の開発型は以下のソースです

      func hasAlpha(_ image:UIImage) -> Bool {
         let alpha = image.cgImage?.alphaInfo
         return alpha == .first || alpha == .last || alpha == .premultipliedFirst || alpha == .premultipliedLast
      }
      func abc()
      {
         let image = …..
         if hasAlpha(image) == true
         {
           //,,,
         }else{
           //…
         }
      }

    extensionを使う場合は

      extension UIImage{

        func hasAlpha(_ image:UIImage) -> Bool {
           let alpha = image.cgImage?.alphaInfo
           return alpha == .first || alpha == .last || alpha == .premultipliedFirst || alpha == .premultipliedLast
        }

      }
      func abc()
      {

        let image = …..
        if image.hasAlpha()
        {
        //,,,
        }else{
        //,,,
        }

      }

    上の二つは同じように見えますが、普通型のほうはhasAlpha機能がClassに属しており、Extension型はUIImageに属しています。Classに属している機能を他のClassで使用するのはちょっと簡単ではないのですが、UIImageの場合は何にでも使用できます.
    このような汎用性の高いExtensionをまとめて、コレクションを作成しておくことで、他のプロジェクトで容易に再使用できます。