private String oder public static String?

In meinem Praktikum eine meiner Kolleginnen gab mir den Tipp. Ich möchte wissen, ob dies ist eine gute Praxis.

Was ich Tat, war die Schaffung von Klassen, die verwendet werden, nur für die Werte, die Sie enthalten, und keine Funktionen, die wirklich etwas tun (abgesehen davon, dass Getter, setter und Konstruktor). Als ich erklärte, dass meine Variablen wie diese:

public class ObjectIUse{
  Private String name;

  public ObjectIUse(String name){
    this.name = name;
  }

  public String getName(){
    return name;
  }
}

So, ich bin nicht mit einem setter, denn es sollte immer die gleiche bleiben. Mein Kollege meinte, dass ich auch es so machen:

public class ObjectIUse{
  public final String name;

  public ObjectIUse(String name){
    this.name = name;
  }
}

Weil wir jetzt nicht brauchen, um alle Getter oder setter, weil es öffentlich ist, aber es kann auch nie geändert werden, weil es final ist.

Was wäre dann besser? Oder wäre es vielleicht besser sei, noch dass es private, sondern auch die Endpreise? Ich meine, alle Optionen funktionieren offensichtlich. Ich möchte nur wissen, was besser ist und warum.

  • Machen Sie es privat. Machen Sie es endgültig.
  • Was Sayem sagte. Public-member-Variablen sind "als schädlich." Wenn Ihr Objekt nicht ändern (wir sagen, dass es "unveränderlich"), erklären die member-variable final. Dies zwingt Sie, um es in den Konstruktor und die es verhindert, das zu ändern-selbst wenn jemand spiegelt Ihre Klasse-Instanz.
  • Das war auch was ich dachte wäre die bessere option. Was ist Ihre Argumentation?
  • Als Gandalf sagt zu Frodo: "Keep it secret, keep it safe"
  • private final BLABLABLA;
  • android recomends verwenden public-Variablen anstelle von Getter und setter im Gegensatz zu java-Programmierung
  • und warum ist es das?
  • Zugriff auf eine variable direkt ist (potentiell) schneller als durch einen getter.
  • finden Sie diese developer.android.com/training/articles/... es hat die details @WereWolfBoy
  • sicher, es ist schneller... aber spielt es eine Rolle, dass viel? Es würde wahrscheinlich weniger sein, als ein (Bruchteil des) Millisekunde Unterschied... Itsn nicht Sicherheit ein wenig wichtiger als ein (Bruchteil des) Millisekunde?
  • es hängt davon ab. Manchmal sind diese Millisekunden einen Unterschied machen, z.B. wenn Sie brauchen, um zu zeichnen Sie ein neues Bild alle 16ms zu erreichen 60fps oder mehr. Und manchmal muss man nur bündeln, die Daten in ein Objekt, um es z.B. in eine List. Diese Art der container-Objekte nicht brauchen klare Kapselung IMHO solange man Sie nur lokal.
  • android zuvor nicht inlining der get-und Set-Methoden (Hinzugefügt in Ingwer-Brot, auch wenn keine vollwertige), so gab es einen riesigen Nachteil-derzeit können Sie es verwenden, sorry für die nicht Aktualisierung auf, die von bens Antwort (google jit-dev) ref stackoverflow.com/a/4930538/1254628
  • Der Artikel scheint zu sagen, dass Sie sollten Sie verwenden für den privaten Bereich-Zugang nur: "Es ist sinnvoll, die Folgen der common object-oriented programming practices und haben Getter und setter in der öffentlichen Schnittstelle, aber innerhalb einer Klasse sollten Sie immer Zugriff auf Felder direkt."
  • der Artikel ist veraltet inlining hinzugekommen-aber noch war es nicht nur für Klasse sondern auch für Objekte, die zu(aber nur Schnittstellen) der Grund dafür war die jit-comp war nicht, dass vollwertige inline-jene codes und war wirklich teuer für ein handheld-Gerät perfomance !! jetzt inlining verfügbar ist, können Sie Getter und setter!!

InformationsquelleAutor WereWolfBoy | 2013-03-28
Schreibe einen Kommentar