2017-05-27 4 views
0

GreenDAO sucht nach Getter und Setter mit dem Präfix "m" in den generierten Klassen.Wie kann ich das Präfix "m" aus den generierten Getter und Setter von greenDAO entfernen?

Zum Beispiel habe ich die Einheit festgelegt keine Getter und Setter zu generieren, aber es sieht immer noch für, sagen wir mal, getMDate() für meine private Date mDate, statt meiner manuell erstellt getDate() Methode. Gleiches gilt für Setter.

Dies ist nur brechen meine Einhaltung der Android Code Style Guidelines.

Gibt es eine Möglichkeit, greenDAO so zu konfigurieren, dass die Codestilstandards verwendet werden, die ich in Android Studio festgelegt habe, wenn Code generiert wird?


EDIT: Nur um die Dinge klarer, habe ich einige Code hinzugefügt meinen Punkt herüber zu erhalten. Ich schrieb die obige Frage auf Antihistaminika wegen chronischem Heuschnupfen, während ich versuchte zu arbeiten und wollte nur schlafen gehen, also entschuldige ich mich, wenn es nicht genug war, damit zu arbeiten.

@Entity(generateConstructors = false, generateGettersSetters = false) 
public class Day { 

    @Id 
    private long mId; 

    @Unique 
    @NotNull 
    private Date mDate; 

    @ToMany(referencedJoinProperty = "mDayId") 
    private List<Goal> mGoals; 

    public Day(long id) { 
     this.mId = id; 

     mGoals = new ArrayList<Goal>(); 
    } 

    public Day(long id, Date date) { 
     this.mId = id; 
     this.mDate = date; 
    } 

    public long getId() { 
     return mId; 
    } 

    public void setId(long id) { 
     mId = id; 
    } 

    public Date getDate() { 
     return mDate; 
    } 

    public void setDate(Date date) { 
     mDate = date; 
    } 

    public List<Goal> getGoals() { 
     return mGoals; 
    } 

    public void setGoals(List<Goal> goals) { 
     mGoals = goals; 
    } 
} 

Oben ist meine Day Klasse. Wie Sie sehen können, habe ich die Generierung der Getter und Setter in der @Entity Annotation deaktiviert und setze meine eigenen ein. Ich habe Android Studio eingerichtet, um das "m" zu berücksichtigen, wenn ich alt + enter verwende, um Getter und Setter für jedes meiner Felder zu erstellen. Hier

public Date getMDate() { 
    return mDate; 
} 

public void setMDate(Date mDate) { 
    this.mDate = mDate; 
} 

ist ein Beispiel für die Getter und Setter, die greenDAO für meinen Code erzeugt private Date mDate das Feld gegeben. Dies ist ein Verstoß gegen die Codestilrichtlinien, da die lokalen Variablen das Präfix "m" enthalten und auch die Methodennamen es enthalten (vielleicht ein kleines Problem, aber Sie können Android Studio so einrichten, dass es nicht Tu das, was mich denken lässt, dass es nicht so sein sollte.

Mit meinen Getter und Setter, greenDAO denkt immer noch die Getter und Setter fehlen, was dazu führt, dass sie zweimal hinzugefügt werden. Einmal wie die, die ich hineinlege, und eine andere als das, was du oben siehst. Dies führt auch zur Generierung des folgenden Codes.

@Override 
protected final void bindValues(DatabaseStatement stmt, Day entity) { 
    stmt.clearBindings(); 
    stmt.bindLong(1, entity.getMId()); 
    stmt.bindLong(2, entity.getMDate().getTime()); 
} 

@Override 
protected final void bindValues(SQLiteStatement stmt, Day entity) { 
    stmt.clearBindings(); 
    stmt.bindLong(1, entity.getMId()); 
    stmt.bindLong(2, entity.getMDate().getTime()); 
} 

Hier ist ein Teil des Codes aus der Klasse DayDao, die aus greenDAO erzeugt wird. Es verwendet immer noch die Namen für die Getter (und auch die Setter), die es verwendet hätte, um seine eigenen Getter und Setter zu generieren (getMDate() anstelle von getDate()), wenn ich ihre Generierung in der -Entitätsklasse nicht deaktiviert habe. Ich kann diesen Code nicht ändern, weil er das nächste Mal, wenn ich das Projekt erstelle, einfach zurückschaltet, und da ist mein Problem.

Meine Frage ist: Wie kann ich greenDAO dazu bringen, das "m" -Präfix-Ding zu berücksichtigen, wenn es seinen Code erzeugt und es dazu bringt, die Getter und Setter zu verwenden, die ich selbst erstellt habe? Oder es sogar bekommen, Getter und Setter selbst zu erzeugen, ohne dass das "m" in den Namen und lokalen Variablen enthalten ist?

+0

Die Verwendung eines Präfix 'm' für Felder, die nicht statisch und nicht öffentlich sind, ist Standard. – Gala

+0

@Gala Ja, und das mache ich. Ich verstehe Ihren Punkt nicht –

+0

Und wir alle verstehen Ihre Frage nicht. Was versuchst du zu archivieren? – Gala

Antwort

0

Die Lösung, für die ich mich entschieden habe, war ziemlich enttäuschend.

Es umfasste nur meine Eigenschaften alle public statt private. Diese Eigenschaften, die immer noch dem Code-Stil entsprechen, würden nicht mehr das Präfix m ... oder irgendein Präfix für diese Angelegenheit verwenden.Es ist keine sehr befriedigende Lösung, da jetzt auf meine Daten zugegriffen werden kann und direkt eingestellt werden kann, nur um einer einfachen Namenskonvention zu entsprechen.

Ich (persönlich) stimme nicht mit Leuten, die sagen, dass die Verwendung von Namenskonventionen die Lesbarkeit verletzt. Wenn Sie Ihren Code gut genug strukturieren und eine ausreichende Beschreibung in Javadoc-Kommentaren und ähnlichem eingeben, werden Sie genau wissen, was etwas tut. Wenn ich die Konventionen verwende, werde ich einen solchen Code wie in meiner Frage oben erstellen, dann denke ich, dass dies eine Situation ist, in der dies der Fall ist, und einen Grund, den Code - Stil in meinen anderen Projekten nicht zu verwenden Zugriff, den ich für meine Daten möchte.