2016-05-10 1 views
1

これは、スタイル/スタンダード/プラクティスのより質問かもしれませんが、次のどれが良い方法とその理由です:SQLiteOpenHelperメソッドはオブジェクトまたはIDを受け入れる必要がありますか?

public long insertSomething(MyAccount account, Employee employee, double rating) { 
    ContentValues values = new ContentValues(); 
    values.put(ACCOUNT_ID, account.getId()); 
    values.put(EMPLOYEE_ID, employee.getId()); 
    values.put(RATING, rating); 
    return mDatabase.insert(MY_TABLE, null, values); 
} 

これは基本的にオブジェクトを受け入れ、次に実行するメソッド内でそのIDを使用していますクエリ。

または:

public long insertSomething(long accountId, long employeeID, double rating) { 
    ContentValues values = new ContentValues(); 
    values.put(ACCOUNT_ID, accountId); 
    values.put(EMPLOYEE_ID, employeeID); 
    values.put(RATING, rating); 
    return mDatabase.insert(MY_TABLE, null, values); 
} 

は、どちらか一方を行うには理由がありますか?どのアプローチをやっていくべきかはわかりません。

答えて

0

両方の実装が同等に効果的なので、より即座に使いやすいものになります。

有効性は、可読性と一貫性などの純粋なパフォーマンス以外の要因によって決まることがあります。一貫性に関しては、SQLiteOpenHelperのすべてのメソッドがオブジェクトとしてしか使用されないか、またはパラメータとして単一の値のみを使用すると、コードの一般的な構造に慣れてしまうので、コードを維持する方が少し簡単です。

0

まず、コードを間違った場所に置きます。確かに、それは技術的には動作しますが、論理的には、SQLOpenHelperは、名前が示すとおり、目的によって異なります。コードを適切に分離したら、その目的とアプリケーションのデータをどのように渡すかによって異なります。ほとんどの場合IDを使用すると、2番目のアプローチは、オブジェクトを渡した方が良いでしょう。 、ん

public long insertSomething(long accountId, Employee employee, double rating) { 
    return insertSomething(accountId, employee.getId(), rating); 
} 

public long insertSomething(long accountId, long employeeID, double rating) { 
    ContentValues values = new ContentValues(); 
    values.put(ACCOUNT_ID, accountId); 
    values.put(EMPLOYEE_ID, employeeID); 
    values.put(RATING, rating); 
    return mDatabase.insert(MY_TABLE, null, values); 
} 

しかし、おそらく、あなたはまた、Employeeオブジェクトを受け入れることができるので、あなたが最も可能性が高い(コンストラクタで終わるだろうORMに精通する必要が冗談:混合した場合、おそらくこれはあなたがしてしまいますものです雑誌ではない):

new EmpoleeRating(accountId, employeeId, rating) 
    .save(); 
関連する問題