2016-11-25 14 views
1

迅速に、複数のクラスに共通する複数の関数を持つベストプラクティスは、それらのクラス間の継承は実現できません。クラス間で同じ関数を使用するためのベストプラクティス

私はプログラミングに慣れていますので、納得しないでください。数ヶ月前に初めて学習を始めたとき、私はコードを繰り返すという酷い練習をしていました。私はRubyでコーディングしていました。ここで、すべての関数が存在するモジュールを作成して、私はそれらの機能を使いたいクラスでした。モジュールの関数内のすべての変数がクラス内で宣言されている限り、コードは機能しました。

似たような方法がありますか、グローバル関数をたくさん作成し、その関数にインスタンス変数を渡すような何か他のことをしなければなりませんか?早急に迅速に書いたすべてのコードについて、あなたの助言に従うことになるので、できるだけ具体的にしてください。ありがとう!

は、あなたの質問に

答えて

0

簡単な答えは、プロトコル

定義するデフォルトの実装とプロトコルに準拠したプロトコル

protocol ProtocolName { 
    /* common functions */ 
    func echoTestString() 
} 

extension ProtocolName { 
    /* default implementation */   
    func echoTestString() { 
     print("default string") 
    } 
} 

クラスにある

class ClassName: ProtocolName { 

} 

ClassName().echoTestString() // default string 

オーバーライドされた実装とプロトコルに準拠するクラス

class AnotherClass: ProtocolName { 

    func echoTestString() { 
     print("my string") 
    } 
} 

AnotherClass().echoTestString() // my string 
0

意見はありますが、これは正しいルートだと思うのですが、Frameworkターゲットを使用してください。プロトコルも機能します。しかし、フレームワークと、次のことができます。プロジェクト間で

  • シェア
  • は、あなたが使用したい場合は、多くの点

にとらわれないて何が必要スコープでローカルにすべてを保つか

  • "include" Swift動詞(とそれに付属するすべて)、あなたはかなりFrameworkターゲットを使用する必要があります。コードの分割も完全にしたい場合。プロトコルは、単一のプロジェクト内にいるとき、コード部分を「繰り返し」したくないとき、そしてあなたが常にローカルになることを知っているときに使用されます。

    (a)プロジェクト間でプロトコルを使用すること、(b)真の分離コードを含めること、(c)グローバル関数を持つこと、(d)インスタンス変数を渡すこと...別々のターゲットを検討することです。あなたの質問のタイトル( "同じ機能を使用する")を見て、OOP対関数型プログラミングを考えると、私は私の解決策を変えないものを追加したいと思っていましたが、関数をパラメータとして渡します。私はそれがあなたが言っているとは思っていませんが、あなたのコーディングでSwiftyのもう一つの部分です。

  • 関連する問題