it-swarm.com.de

Namenskonvention für Android-ID: Kleinschreibung mit Unterstrich im Vergleich zu Kamel

Ich programmiere derzeit eine Anwendung für Android. Was ich nun herausgefunden habe, ist, dass Sie keine Ressourcenobjekte, zum Beispiel ein Bild, im zeichnbaren Ordner platzieren können und es mit "myTestImage.jpg" benennen können. Daraufhin erhalten Sie einen Compiler-Fehler, da die Kamel-Case-Syntax nicht zulässig ist. Daher müssen Sie ihn in "my_test_image.jpg" umbenennen.

Aber was ist mit IDs, die Sie in der XML-Datei definieren. Angenommen, Sie haben die folgende Definition

<TextView Android:id="@+id/myTextViewFirstname"
              Android:layout_width="wrap_content"
              Android:layout_height="wrap_content"
              Android:text="Firstname" />

Dies ist eine gültige Definition, kompiliert und funktioniert auf meinem Android-Emulator einwandfrei, obwohl ich - wie Sie sehen - die ID in der Kamel-Case-Syntax angibt.

Die Android-Beispiele verwenden jetzt immer Kleinbuchstaben und Unterstriche. Ist dies nur eine Namenskonvention, bei der Kleinbuchstaben mit Unterstrich für die IDs verwendet werden, oder kann dies Probleme auf dem realen Gerät verursachen?

Vielen Dank

80
Juri

Das Gerät beschwert sich nicht, wenn Sie die ID-Namen der Kamel-Fälle verwenden. Für meine erste Anwendung habe ich alle IDs in Camel-Case geschrieben, weil ich denke, dass dies im Java-Code auf diese Weise besser erscheint und gut funktioniert.

Ich ändere langsam meine Meinung zu Camel-Case, weil Sie zwei unterschiedliche Namenskonventionen erhalten - zum Beispiel:

// This must be undescored due to naming constrictions
setContentView(R.layout.my_long_layout_name);

// Now this looks a little out of place
findViewById(R.id.myLongSpecificId);

Auch ich wundere mich über die Standards hier. Google ist in ihren Beispielen inkonsistent. Manchmal verwenden sie nur Kleinbuchstaben, manchmal fügen sie Unterstriche ein, und manchmal verwenden sie Kamelbuchstaben.

81
Daniel Lew

Wenn Sie sich Android.R.id.*-Felder anschauen, werden Sie feststellen, dass sich alle in Kamel-Fällen befinden. Wenn also die Android-IDs in Kamel-Fällen geschrieben sind, müssen wir dieser Konvention folgen :)

12

Ich denke, er spricht über IDs in einer xml-Datei.

z.B:

Android:id="@+id/home_button"

versus

Android:id="@+id/HomeButton"

Ich habe keine Konvention oder Richtlinie in dieser Angelegenheit gefunden, daher verwenden die Entwickler in meinem Projekt beide Methoden undeutlich, was ziemlich schmerzhaft ist :(

9

Wenn Sie sich einige Beispiele der Googles-App ansehen, z.

https://github.com/google/iosched

Sie verwenden Unterstriche. Also ... vielleicht sollten wir es so machen?

4
Micro

ich finde es gut, wenn wir alle Kleinbuchstaben mit Unterstrichen verwenden.

Schauen Sie sich das an (Hinzufügen zu dem, was Daniel geantwortet hat)

  // Camel Case
    TextView tvUserName = (TextView) findViewById(R.id.tvUserName);
    // Small Caps and Underscores
    TextView tvUserName = (TextView) findViewById(R.id.tv_user_name);

nach meiner eigenen Erfahrung neige ich dazu, die Camel Case-Konvention in xml ein wenig durcheinander zu bringen, denn wenn Sie Java mit Java verbinden, die auch Camel Case verwendet (weil es der Standard ist), sieht es aus wie ein Doppelgänger.

4
Rogene Sagmit

xml-Dateinamen (wie sie im zeichnerischen Ordner verwendet werden) müssen durch den Unterstrich _ getrennt werden, da Großbuchstaben in xml nicht unterstützt werden.

1
Paul
Android:id="@+id/frag_account_button"
frag_account_button = ((ListView)view.findViewById(R.id.frag_account_button));

Android:id="@+id/fragAccountButton"
fragAccountButton = ((ListView)view.findViewById(R.id.fragAccountButton));

Erstens gibt es keinen bestimmten Standard, der definiert werden kann, welcher gültiger ist, aber ich habe ein paar Gründe, das zu beweisen. Meine Idee ist vernünftig, XML-ID und Java-Variable im Kamel-Fall in demselben Namen zu halten Konvention.

1-) Sie können die Variable leicht erreichen, indem Sie sowohl nach XML als auch nach Java suchen.

2-) ButterKnife-Bibliotheksdefinition

 @BindView(R.id.infoTextView)
    TextViewFont infoTextView;

es ist richtiger, sich auf diese Weise zu halten. 

0
Samet öztoprak

Ich denke, wenn wir in XML-Dateien die Unterstrichkonvention für die ID und in Klassenfeldern die Konvention für Camel-Fälle verwenden, wird dies jedem Entwickler eine bessere Sichtbarkeit geben, um zwischen XML-IDs und Klassenfeldern zu unterscheiden.

0
Yasir Ali

Wenn der Android-Compiler wirklich das tut, was Sie sagen, indem er den Kamelfall einschränkt (was ziemlich seltsam erscheint), sollten Sie sich an die festgelegten Konventionen halten.

Wenn Sie gegen den Strich gehen, führt dies nur zu unnötiger Verwirrung. ... Halten Sie die Dinge an allen Orten, wo möglich, konstant.

0
Brock Woolf