Ich suche nach einem gründlichen Vorschlag für eine Android-Namenskonvention. Ich habe hier ein bisschen gefunden:
http://source.android.com/source/code-style.html#follow-field-naming-conventions
was sagt:
- Nicht öffentliche, nicht statische Feldnamen beginnen mit m.
- Statische Feldnamen beginnen mit s.
- Andere Felder beginnen mit einem Kleinbuchstaben.
- Öffentliche statische Endfelder (Konstanten) sind
ALL_CAPS_WITH_UNDERSCORES
.
Dennoch suche ich etwas viel umfangreicheres, das alle Aspekte von Android abdeckt:
- wie man Layouts und Ansichten innerhalb benennt,
- wie man Menüs benennt
- wie man Stile benennt
- wie man Datenbanktabellen (Singular, Plural) und Felder innerhalb benennt
- usw
Wenn es einen allgemein akzeptierten Vorschlag gibt, würde ich dem einfach gerne folgen. Alle SDKs scheinen ihren eigenen Weg zu gehen, daher bin ich besonders an der Android-Methode interessiert.
android
naming-conventions
Dorjeduck
quelle
quelle
Antworten:
Die Android-Richtlinien von ribot sind ein gutes Beispiel für Standard-Namenskonventionen:
Namenskonvention für XML-Dateien:
activity_<ACTIVITY NAME>.xml - for all activities dialog_<DIALOG NAME>.xml - for all custom dialogs row_<LIST_NAME>.xml - for custom row for listview fragment_<FRAGMENT_NAME>.xml - for all fragments
Namenskonvention für Komponente / Widget in XML-Dateien:
Alle Komponenten für die X - Aktivität muss mit dem Aktivitätsnamen beginnen alle Komponenten sollten Präfix oder Kurznamen wie haben BTN für
Button
wie folgt beispielsweise Name für die Anmeldung Aktivität Komponente sein sollte.Kurzname der Hauptkomponenten:
quelle
Dies ist eine hervorragende Sammlung von Best Practices für den Anfang: https://github.com/futurice/android-best-practices
Folgendes benutze ich. Ich werde auch von diesem Link kopieren.
Objektbenennung
m
oder nichts
gemäß den Google-Richtlinien. Ich habe jahrelang aufgehört und finde es ohne sie einfacher. Die IDE informiert Sie, wenn Sie etwas Privates oder Statisches verwenden. es scheint eine veraltete Konvention zu sein.functionUrl
undunitId
. NichtunitID
.tvName
. Eine EditView mit einem Passwort wäreetPass
.lv
.id
stringId. Die IDE zeigt an, wann es sich um einen String, einen Float oder einen Long handelt.Pass
anstelle vonPassword
.tv_name
undet_pass
android:id
als erstes Attribut in das XML ein.Dateinamen
fragment_contact_details.xml
,view_primary_button.xml
,activity_main.xml
./activities/MainActivity.java
oder/fragments/DeleteDialog.java
. Meine Ordner sind Aktivitäten, Fragmente, Adapter, Modelle und Dienstprogramme .ChatListAdapter
.Farben.xml und Dimens.xml als Palette
Verwenden Sie für Farbe Namen wie
gray_light
, nichtbutton_foreground
.Verwenden Sie für Dimensionen Namen wie
spacing_large
, nichtbutton_upper_padding
.Wenn Sie etwas Spezielles für Ihre Schaltflächenfarbe oder Ihren Abstand festlegen möchten, verwenden Sie eine Stildatei.
string.xml
Benennen Sie Ihre Zeichenfolgen mit Schlüsseln, die Namespaces ähneln, und haben Sie keine Angst, einen Wert für zwei oder mehr Schlüssel zu wiederholen.
Verwenden Sie
error.message.network
nichtnetwork_error
.Argumentation
Der Zweck von Namenskonventionen besteht nicht darin, alles ordentlich und konsistent zu machen . Es ist da, um mögliche Fehler zu kennzeichnen und den Workflow zu verbessern. Die meisten davon sind für Tastaturkürzel geeignet. Versuchen Sie, sich darauf zu konzentrieren, Fehler zu minimieren und den Workflow zu verbessern, anstatt gut auszusehen.
Präfixe eignen sich hervorragend für "Wie heißt diese Textansicht?" Momente.
Suffixe gibt es für die Dinge, auf die Sie auf diese Weise nicht so oft zugreifen, die aber verwirrend sein können. Beispielsweise kann ich nicht sicher sein, ob ich meinen Code in die Aktivität, das Fragment oder den Adapter dieser Seite eingefügt habe. Sie können fallen gelassen werden, wenn Sie möchten.
XML-IDs werden häufig in Kleinbuchstaben geschrieben und verwenden Unterstriche, nur weil jeder dies auf diese Weise zu tun scheint.
quelle
ActivityMain
oderMainActivity
. Welches würdest du empfehlen? Ich denke, es macht Sinn, vorbei zu gehen: KLASSE :NameActivity
, LAYOUT :name_activity
, KOMPONENTE :nameactivity_component_name
. Ein Beispiel hierfür wäre MainActivity, main_activity, mainactivity_btn_cancelmBackgroundHandler
usw. kommt. Wenn Sie sie benennen, werdenbackgroundHandler
die wichtigen Informationen links angezeigt . Wenn Sie es benötigen, können Sie durch Hinzufügen eines Suffixes zu Parametern und eines Suffixes für lokale Variablen die Unterstriche visuell und mental überspringen, es sei denn, Sie müssen sich auf sie konzentrieren.KONSISTENZ
Jeder (außer in Teams) hat seine eigene Konvention und welche Sie wählen, spielt keine Rolle. Es ist wichtig, sicherzustellen, dass es in der gesamten Anwendung konsistent ist .
STRUKTUR
Persönlich verwende ich eine Namenskonvention wie diese, da sie vom Klassennamen bis zur Komponente reicht und in der gesamten XML-Datei konsistent ist:
<ClassName>
<ClassName>**Activity**
classname_activity
classname_activity_component_name
Ein Beispiel hierfür wäre
OrderActivity.class
,order_activity.xml
,order_activity_bn_cancel
. Beachten Sie, dass das gesamte XML in Kleinbuchstaben geschrieben ist.ABKÜRZUNG VON LAYOUTS
Wenn Sie kürzere Namen verwenden möchten, um den Code aufgeräumter zu halten; Dann kann eine andere Methode darin bestehen, ALLE Namen in XML sowie die Layouts abzukürzen.
Ein Beispiel hierfür wäre OrderActivity .class: ord_act .xml, ord_act _bt_can, ord_act _ti_nam, ord_act _tv_nam. Ich zerlege die Namen in drei, aber das hängt davon ab, wie viele ähnliche Namen Sie haben
ABKÜRZEN VON KOMPONENTENTYPEN
Wenn Sie Komponententypen abkürzen, versuchen Sie, diese ebenfalls konsistent zu halten. Normalerweise verwende ich zwei Buchstaben für den Komponententyp und drei Buchstaben für den Namen. Manchmal ist der Name jedoch nicht erforderlich, wenn dies das einzige Element dieses Typs im Layout ist. Das Prinzip der ID soll eindeutig sein
nam_act_component_nam
ABKÜRZUNGEN DES KOMPONENTENTYPS (Diese Liste enthält zwei Buchstaben, die reichlich sind)
Rahmenlayout: fl
Lineares Layout: ll
Tabellenlayout: tl
Tabellenzeile: tr
Gitterlayout: gl
Relatives Layout: rl
Textansicht: tv
Button: bt
Kontrollkästchen: cb
Schalter: sw
Toggle Button: tb
Bild Button: ib
Bildansicht: iv
Progress Bar: pb
Bar Seek: sb
Bewertung Bar: rb
Spinner: sp
WebView: wv
Text bearbeiten: et
Radio Group: rg
Listenansicht: lv
Grid View: gv
Erweiterbare Listenansicht: el
Scroll - Ansicht: sv
Horizontal Scroll - Ansicht: hs
Suche: * se
Tab Host: th
Video ansehen: vv
Dialer Filter: df
Include: ic
Fragment: fr
Benutzerdefinierte Ansicht (andere): cv
quelle
Ich glaube, dafür gibt es noch keine Konvention. Jedes Unternehmen hat seine eigenen Regeln und ich denke, niemand kümmert sich hier viel darum.
Für mich ziehe ich es vor, den Namen an den Kontext zu binden. Wenn es beispielsweise eine Aktivität mit dem Namen "MainActivity" gibt, lautet der Layoutname "main_activity.xml". Für jede dieser Aktivität zugeordnete Ressource füge ich ein Präfix "main_activity" hinzu, damit ich weiß, dass sie verwendet wird. Gleiches gilt für die für diese Aktivität verwendeten IDs.
Der Grund, warum ich diese Namen verwende, ist, dass es einfacher ist, sie zu finden, bei Bedarf zu löschen und sie nicht durch andere zu ersetzen, wenn Sie Android-Bibliotheken verwenden, da die Namen ziemlich eindeutig sind.
Ich versuche auch so viel wie möglich, aussagekräftige Namen zu vergeben, sodass Sie normalerweise nicht "listView" oder "imageView2" als IDs sehen, sondern so etwas wie "contactListView" und "contactImageView". Der gleiche Name (oder ähnlich) würde auch mit den Variablen im Java-Code übereinstimmen, um das Auffinden zu erleichtern.
Kurz gesagt, meine Tipps sind:
Versuchen Sie, Zahlen in den Namen zu vermeiden. Sie bedeuten normalerweise nicht viel und zeigen, dass Sie Drag & Drop nur für den UI-Designer verwendet haben.
Machen Sie sich bei Demos, POCs und Fragen hier keine Gedanken über die Benennung.
Versuchen Sie, allen Namen der Ressourcen (einschließlich der IDs) ein Präfix hinzuzufügen, um anzuzeigen, zu welchem Kontext sie gehören, und um eine Eindeutigkeit zu erzielen.
Geben Sie nach Möglichkeit aussagekräftige Namen.
quelle
Die neuesten Android Eclipse-Plugins erstellen einige der Dateien, die Sie beim Erstellen eines neuen Projekts automatisch erwähnen. Daher ist die Benennung ungefähr so:
layout/activity_main.xml menu/activity_main.xml ...
Ich folgte diesem Schema mit z
layout/fragment_a.xml layout/fragment_b.xml ...
Es ist also so etwas wie bei Paketnamen, von allgemein bis detailliert. Es ermöglicht auch eine saubere Sortierung.
quelle
Jeder Körper verwendet seine eigenen. Das Hauptziel ist es, Fehler und Fehlinterpretationen zu vermeiden, insbesondere wenn andere Ihren Code lesen. Obwohl die Syntaxhervorhebung und die automatische Codeüberprüfung in modernen IDEs weniger sinnvoll sind.
Diese Namenskonventionen machen es jedoch auch sehr praktisch, wenn die Code-Vervollständigung aktiviert ist. Wenn Sie beispielsweise nur eingeben
m
und automatisch vervollständigen, wird eine Liste der Klassenfelder angezeigt.Aber oft muss man mit dem Code anderer arbeiten, der eine solche Konvention nicht verwendet. Solche geschützten Variablen und überschriebenen Methodenparameter tragen nur zur Verwirrung bei.
Einige Beispiele:
Stellen Sie Klassenvariablen m voran und machen Sie statische Endvariablen zu Großbuchstaben mit
_
trennenden Wörtern. Stellen Sie keine Variablen für Variablen mit niedrigerem Gültigkeitsbereich voran.Name Layout nach den UI Eltern, zum Beispiel
act_main.xml
,frg_detail.xml
,itm__act_main__list1.xml
; für eine AktivitätMainActivity
ein Fragment bzw.DetailFragment
ein Elementlayout für einListView
InMainActivity
mit IDlist1
.Namenselement-
lsv__act_main__list1
IDs in XML-Layouts wie: für eine ListView undbtn__act_main__submit
für ein `Button-Element. Dies macht es viel einfacher, sie mit der automatischen Vervollständigung zu finden.quelle
activit_main.xml
,fragment_main.xml
,button_activity_main_submit.xml
etc.In Bezug auf Namenskonventionen und / oder Best Practices folge ich häufig dieser MD-Datei des Ribot / Android-Richtlinien- Repositorys in Github, in der Projekt- und Codierungsrichtlinien eingetragen sind.
quelle