2016-05-10 5 views
1

Dies könnte eher eine Art/Normen/Praktiken Frage, aber welche der folgenden ist der bessere Weg, und warum:Sollten SQLiteOpenHelper-Methoden Objekte oder IDs akzeptieren?

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); 
} 

Diese Annahme ist im Grunde Objekte und dann innerhalb der Methode ihrer IDs unter Verwendung der durchzuführen Abfrage.

Oder:

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); 
} 

Gibt es einen Grund eine oder das andere zu tun? Ich bin mir nicht sicher, mit welchem ​​Ansatz ich gehen sollte.

Antwort

0

Beide Implementierungen sind gleich wirksam, es geht also darum, was für Sie unmittelbarer und benutzerfreundlicher ist.

Manchmal wird die Effektivität von anderen Faktoren als der reinen Leistung, wie Lesbarkeit und Konsistenz, bestimmt. In Bezug auf die Konsistenz wäre es etwas einfacher, den Code zu pflegen, wenn alle Methoden in Ihrem SQLiteOpenHelper nur Objekte oder nur einzelne Werte als Parameter verwenden, da Sie sich auf lange Sicht an die allgemeine Struktur des Codes gewöhnen.

0

Zunächst setzen Sie Ihren Code falsch ein. Sicher, es wird technisch funktionieren, aber logisch, SQLOpenHelper ist, wie der Name schon sagt, für verschiedene Zwecke. Sobald Sie den Code ordnungsgemäß getrennt haben, hängt dies vom Zweck und davon ab, wie Sie Daten in Ihrer App weitergeben. Wenn Sie meistens IDs verwenden, würde der zweite Ansatz besser passen, wenn Sie Objekte übergeben, dann der erste. Wenn gemischt, dann vielleicht ist es das, was Sie mit am Ende wird:

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); 
} 

Aber vielleicht scherze müssen Sie mit ORM vertraut zu machen, so ist, dann würden Sie wahrscheinlich mit (Konstruktor könnte am Ende auch Employee-Objekt akzeptieren, wird nicht matternow):

new EmpoleeRating(accountId, employeeId, rating) 
    .save(); 
Verwandte Themen