2017-01-12 9 views
0

これはコード設計に関する質問です。APIメソッドを取得する - クラスまたはモジュール

私は、アプリケーションがタスクを実行するために消費するデータをフェッチするAPI呼び出しを行う一連のメソッドを持っています。これらのメソッドは、必要なデータをフェッチするために同じ2-3変数入力を必要とします。これらのメソッドをクラスまたはモジュールにまとめたいのですが、何を使うべきかわかりません。私はちょうどAPIを使用してデータを読み取るためにこれらのメソッドを使用しているので、クラスを使用すると私には奇妙に感じる。

提案がありますか?参照用に以下のサンプルメソッドを追加しました。私はちょうどこれらのようなメソッドのためのモジュールを使用するか、クラス内でそれらをラップするべきですか?私がクラスを使用する場合、私は各メソッドに同様のパラメータを渡す必要はないかもしれません。

module Client 
    module Features 
     def get_feature_set(client, version, locale) 
      //code 
     end 
     def get_feature_detail(feature_id, client, version, locale) 
      //code 
     end 
     def get_locales(client) 
      //code 
     end 
    end 
end 
+0

あなたの説明が助言するにはあまりにも曖昧ですに。これまでに持っていたメソッドの例と、それを呼び出す方法をいくつか追加できますか? –

+0

サンプルコードを追加しました。 @AlexWayne、それについて申し訳ありません。 –

答えて

1

すべてのメソッドがclientを必要とするようです。したがって、私はこのclientでクラスを初期化することについて考えるでしょう。

代わりのClient::Feature.get_locales(client)

Client.new(client).locales 

代わりのClient::Feature.get_feature_set(client, version, locale)

Client.new(client).feature_set(locale, version) 

代わりのClient::Feature.get_feature_detail(feature_id, client, version, locale):おそらく、このようなインターフェイスを持つ

Client.new(client).feature_detail(feature_id, locale, version) 
# or 
Client.new(client).feature_set(locale, version).details(feature_id) 
0

一般的な方法で共通コードのモジュールを定義することができます。 クラスから「include」を呼び出して、特定のクラスに共通メソッドを含めるようにします。 (ミックスイン)

関連する問題