2017-06-28 7 views
0

私の "顧客ユーザー"のためのサービスを作成する必要があります。私のAPIエンドポイントは/api/v1/customer/:id_customer/usersで、GET/POST/PUT/DELETEメソッドです。

さて、私のAngularJSコードで、私は私のAngularJS controllersと、このような$httpサービスとの間のインターフェースであるサービスがあります。私は:id_customerする必要が私の「顧客ユーザー」サービスでは、今

module.exports = function ($http) { 
    var service = {}; 
    var _mainUrl = 'http://localhost:8080/api/v1/customer/'; 

    service.get = function (id) { 
     return $http({ 
      method: 'GET', 
      url: _mainUrl + id 
     }); 
    }; 

    service.save = function (model) { 
     return $http({ 
      method: 'POST', 
      url: _mainUrl, 
      data: model 
     }); 
    }; 

    return service; 
}; 

を私のサービスに渡されます。だから、すてきなアプローチでしょうか?私は渡す必要があります:のようなすべての方法にid_customer、:

module.exports = function ($http) { 
    var service = {}; 
    var _mainUrl = 'http://localhost:8080/api/v1/customer/'; 
    var _tailUrl = '/user/'; 

    service.get = function (id_customer, id) { 
     return $http({ 
      method: 'GET', 
      url: _mainUrl + id_customer + _tailUrl + id 
     }); 
    }; 

    return service; 
}; 

それとも私が"setter"を持つべきであると同様に、任意の呼び出しを行う前に、それを呼び出す:

module.exports = function ($http) { 
    var service = {}; 
    var _mainUrl = 'http://localhost:8080/api/v1/customer/'; 
    var _idCustomer = ''; 
    var _tailUrl = '/user/'; 

    service.get = function (id) { 
     return $http({ 
      method: 'GET', 
      url: _mainUrl + _idCustomer + _tailUrl + id 
     }); 
    }; 

    service.setCustomer = function (id_customer) { 
     _idCustomer = id_customer; 
    } 

    return service; 
}; 

答えて

1

最初のアプローチが優れています - id_customerとを1つのメソッドに渡します。

いくつかの理由があります。

  1. カップリングが。 「セッターを持って電話をかける前に呼び出す」というのは、この「セッター」メソッドとそれに対応する「ゲッター」メソッドは非常に緊密に結合されています。「ゲッター」メソッドは、その「セッター」に依存します。メソッドは、高い凝集力と低い結合性を持っている必要があります。詳細については、Couplingを参照してください。
  2. メンテナンスの問題。 'setter'は 'getter'の前に呼び出される必要があるため、このルールを文書化して、プロジェクト内のすべての新しいプログラマに渡す必要があります。しかし、人々は物事を忘れる。経験豊かな開発者であっても、このルールを忘れる可能性があります。プログラマが 'getter'を呼び出すが、最初に 'set'を忘れると、エラーが発生します。人の訓練ではなく、設計をコーディングすることでエラーを防ぐ方が良いでしょう。
  3. 不一致状態。 「得意先」、「得意先ユーザー」および「顧客」はすべて同じサービスに含まれているため、場合によっては得意先Aが設定されている可能性がありますが、「得意先」または「得意先」が、 get-customer-users 'が呼び出され、別の顧客のデータが返されます。これは、「call setter の直前の getter invokation」の規則に厳密に従うことで防ぐことができますが、このルールは開発者のトレーニングと習慣によって異なります。
+0

非常に便利です!行くだろう! –

関連する問題