Frage Ist es eine gute Programmiermethode, statische Importfelder zu verwenden?


Ich erkläre einige konstante Variablen in meinem SQLiteOpenHelper Klasse:

public static final String USERNAME = "user_name";
public static final String PASSWORD = "password";

In einem (n Activity Wo ich SQL-Abfragen erstelle, importiere ich diese Felder:

import com.mygame.ui.login.LoginInfoSQLiteOpenHelper.*;

Ist das eine gute Übung?
Oder die traditionelle Art, auf Konstanten besser zu verweisen?

LoginInfoSQLiteOpen.USERNAME

5
2018-06-28 01:53


Ursprung


Antworten:


Wenn Sie sich jemandes Code ansehen und ein Feld wie sehen

foo.do(baz, USERNAME); 

wut (!), woher kam diese Var?
Suche, Grep, wo wird es erklärt?

Verwenden Sie es als ClassName.FIELD macht die Dinge viel klarer und sauberer. Sie vermeiden Verwirrung, und manchmal macht es mehr Sinn, einen richtigen Klassennamen zu haben, der das Feld bezeichnet, als ein Feld, das aus dem Nichts kam.


Nun, nicht jeder benutzt eine IDE, und nicht jeder liest Code über eine IDE (vielleicht über ein Repository im Web), und sogar einige halten VIM für eine IDE, und ich benutze vim sehr viel (obwohl ich nicht daran denke als eine IDE).
Es geht also nicht darum, was eine IDE tun kann oder was nicht, sondern um mehr Codelesung handelt von. Code lesen, Codequalität, Ideen ausdrücken in Ihrer Programmiersprache der Wahl, in gewisser Weise durch Abstraktionen Das Sinn ergeben und binden gut zusammen.


9
2018-06-28 02:03



Ich empfehle die zweite Methode, nur Klassen importieren nicht Felder. Also, setze deine Konstanten vor die besitzende Klasse, wie LoginInfoSQLiteOpen.USERNAME. Es kann sehr redundant werden, aber auf lange Sicht ist es viel besser lesbar und wartbar.


2
2018-06-28 02:08



Ein paar Jahre zu spät zur Party ... aber ich denke, dass es sich lohnt, den gegenteiligen Standpunkt zu vertreten. Es gibt einen Grund, warum Java für den Import statischer Felder konzipiert wurde. Der Grund liegt darin, zu verbergen, wie die Klasse für Benutzer der Klasse implementiert wird. Dies ist ein wichtiges Konstruktionsprinzip für nach außen zeigenden Code. Ich würde c00kiemon5ter zustimmen, aber es könnte Situationen geben, in denen es sich lohnt.

Weitere Informationen zum statischen Feldimport finden Sie hier: https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html


2
2018-01-13 06:08