GUIs, ob in WinForms oder XAML geschrieben, scheinen die unterschiedlichsten Namenskonventionen zwischen Projekten zu haben, die ich sehe. Für einen einfachen TextBox
Namen einer Person habe ich verschiedene Namenskonventionen gesehen:
TextBox tbName // Hungarian notation
TextBox txtName // Alternative Hungarian
TextBox NameTextBox // Not even camelCase
TextBox nameTextBox // Field after field with TextBox on the end
TextBox TextBoxName // Suggested in an answer...
TextBox textBoxName // Suggested in an answer...
TextBox uxName // Suggested in an answer...
TextBox name // Deceptive since you need name.Text to get the real value
TextBox textBox1 // Default name, as bad as you can get
Ich halte mich normalerweise an die StyleCop-Regeln für alle meine CS-Dateien und sehe auch andere, aber die GUI neigt dazu, diese Regeln zu brechen oder stark zu variieren. Ich habe keine Microsoft-Richtlinien gesehen, die sich speziell auf GUI-Elemente anstatt nur auf normale Variablen beziehen, oder sogar Beispiele, die außerhalb einer Konsolenanwendung gelten würden.
Was sind die Best Practices für die Benennung von Elementen in einer GUI?
c#
winforms
user-interface
naming-conventions
Will Eddins
quelle
quelle
Antworten:
Ich verwende die ungarische alte Schule ... txt für TextBox, btn für Button, gefolgt von einem verallgemeinerten Wort, dann einem spezifischeren Wort. dh:
Viele Leute haben Dinge gesagt wie "Omg das ist so alt, VB6 ruft!" Aber in einer UI Rich-Winforms-App kann ich Dinge schneller finden und ändern, da das erste, was Sie über ein Steuerelement wissen, normalerweise der Typ, dann die Kategorie und dann die Spezifität ist. Während die neueren Namenskonventionen im Stil stecken bleiben und versuchen, sich daran zu erinnern, wie sie dieses Textfeld benannt haben.
Die ursprüngliche Spezifikation für Steuerelemente finden Sie hier (archiviert).
quelle
Ich benutze:
Genau wie ich verwenden würde:
Der Grund dafür ist, dass in diesen Fällen "TextBox" und "Adresse" beschreiben, was das Objekt darstellt, nicht wie es gespeichert oder verwendet wird. Aber in einem anderen Fall wie dem Speichern des vollständigen Namens einer Person würde ich Folgendes verwenden:
string fullName;
Nicht:
string fullNameString;
Denn "String" beschreibt nicht, was das Objekt darstellt, sondern nur, wie es gespeichert wird.
quelle
Gleiche Konvention wie alles andere in .NET: Nur beschreibender Name für Kamelfälle, optional gefolgt von einem Suffix, wenn Sie verschiedene Klassen für dasselbe logische "Ding" unterscheiden müssen. Zum Beispiel:
string name; // a name TextBox nameText; // the control used to edit the name Label nameLabel; // the control used to label the edit control List<string> nameList; // a list of names
und so weiter bis ins Unendliche. Es ist wirklich egal, wie die Suffixe lauten, solange sie konsistent und beschreibend sind.
quelle
Dies ist nicht meine Erfindung, aber ich mag es:
TextBox uxName = new TextBox(); Label uxNameLabel = new Label(); Button uxAccept = new Button();
Ich ziehe dies der ungarischen Notation vor, da alle meine UI-Steuerelemente in einem Block in Intelisense angezeigt werden. UX für "User eXperience". Es ist auch schön, wenn Sie ein Steuerelement von einem Textfeld in eine Combobox oder etwas anderes ändern, da sich der Name nicht ändert.
quelle
Ich wünschte, jemand würde die Autorität in diesem Bereich werden und es einfach so sagen, wie es ist, und anfangen, es durchzusetzen ... Das Schlimmste für mich ist, wenn Leute es in derselben Anwendung oder noch schlimmer in derselben Klasse verwechseln.
Ich habe einige ziemlich schreckliche Sachen mit txtName, NameTextBox, name und textBox1 gesehen, die alle in derselben Form verwendet wurden ... yuck.
Wo ich arbeite, haben wir ein Standarddokument, das uns sagt, wie es geht, wo es geht, und ich denke, nur 20% der Menschen möchten überhaupt versuchen, sich anzupassen.
Normalerweise ändere ich etwas, wenn Fxcop mich anschreit.
http://en.wikipedia.org/wiki/Naming_conventions_%28programming%29
Großschreibungsstile
Beachten Sie Folgendes: Microsoft .NET empfiehlt UpperCamelCase (auch bekannt als "Pascal Style") für die meisten Bezeichner. (lowerCamelCase wird für Parameter empfohlen).
quelle
Das Wichtigste an Namenskonventionen ist, etwas Sinnvolles zu wählen, einen Konsens von allen Parteien zu erzielen und daran festzuhalten, als ob Ihr Leben davon abhängen würde.
Für welche Konvention würde ich stimmen:
Es ist kurz und hat einen semantischen Wert als Bezeichner. Was den Typ des Bezeichners angeht, würde ich mich auf Visual Studio verlassen, um Ihnen zu sagen, dass dies in der Regel gut ist.
quelle
Ich benutze die Hungernotation mit einem kleinen Unterschied.
Ich arbeite jetzt an einem Projekt mit einer ziemlich umfangreichen Benutzeroberfläche. Mit Intellisense ist es also sehr einfach, eine Schaltfläche mit dem Namen btnGetUsers zu finden.
Die Dinge werden kompliziert, wenn die Anwendung Benutzer von verschiedenen Standorten abrufen kann. Das sind verschiedene Kontrollen. Also fing ich an, meine Steuerelemente nach ihrem Standort zu benennen und immer noch die ungarische Notation zu verwenden.
Beispiel: tabSchedAddSchedTxbAdress bedeutet, dass txbAddress ein Textfeld ist, in das eine Adresse eingefügt werden kann und das sich auf der Registerkarte Zeitplan hinzufügen auf der Registerkarte Zeitplansteuerung befindet. Auf diese Weise kann ich Steuerelemente sehr einfach finden und wenn ich einfach "btn" tippe, bekomme ich nicht sofort viele Schaltflächen von überall auf der Benutzeroberfläche.
Das soll mir natürlich nur helfen. Mir ist eine solche Best Practice nicht bekannt. Es hilft jedoch sehr.
Mosu '
quelle
Ich benenne alle meine UI-Elemente TypeDescriptor. Folgen Sie Ihrem Beispiel
TextBoxName
.quelle
userName
oderpassword
, aber es gibt keine Verwechslung mitTextUserName
undTextPassword
.AdjectiveNoun
. Zum BeispielUserName
nichtNameUser
. ATextBoxName
wäre also der Name eines Textfelds (es ist ein Name oder ein Substantiv vom Typ TextBox).NameTextBox
ist richtig: es ist einTextBox
Typ oder fürName
, genau wieUserName
ist einName
Typ oder für ,User
.Ich habe in letzter Zeit mit einem Team gearbeitet, das von MFC (6.0 ...) wechselt. Dort hätten sie so etwas wie
Der einfachste Weg zur Migration war die Verwendung von so etwas wie
Es ist nur eine Erinnerung genug, dass die Variable das Steuerelement und nicht der Wert des Steuerelements ist.
Ich denke, den Typ als Teil des Namens aufzunehmen ist nur ALT.
- Bearbeiten - Ein weiterer Vorteil ist, dass alle Steuerelemente beim Navigieren zusammengefasst werden. Wenn der tatsächliche Typ verwendet würde, wären die ComboBox-Steuerelemente ziemlich weit von den TextBox-Steuerelementen entfernt.
quelle
Ich verwende normalerweise c_typeName (bitte beachten Sie, dass Typ und Name unterschiedlich sind), z. B. c_tbUserEmail für eine TextBox, in die der Benutzer seine E-Mail-Adresse eingeben sollte. Ich finde es nützlich, weil es bei vielen Steuerelementen schwierig sein kann, sie in der kilometerlangen Intellisense-Liste zu finden. Wenn ich also das Präfix c_ hinzufüge, kann ich alle Steuerelemente in dieser Form leicht sehen.
quelle
Dieser Wahnsinn mit ungarischen / VB6-Namen muss aufhören.
Wenn Microsoft wirklich wollte, dass Sie Ihre Steuerelemente nach ihrem Typ benennen, warum greift Visual Studio dann nicht automatisch auf "txt" oder "btn" an, wenn Sie das Steuerelement zu Ihrem Web- / Win-Formular hinzufügen?
quelle
Sie haben die Richtlinien für Namen von Microsoft. Ich verfolge nicht alles, aber es ist ein guter Ausgangspunkt
quelle
Ich verwende die ungarische Notation, die es einfach macht, Steuerelemente auf großen Seiten zu finden.
quelle
Für die Elemente, die ich nicht in meinem Code verwenden möchte, lasse ich den Designer sie einfach für mich erledigen. Wenn sie in meinem Code verwendet werden, werden sie in etwas Sinnvolles geändert, und das ist zufällig descriptionType (nameTextBox). So erstellt der Designer sie, wenn genügend Informationen vorhanden sind (siehe Menüpunkte - "Beenden" wird zu exitMenuItem).
quelle
Meine eigene Praxis ist: Geben Sie _contextDescriptionType ein. Z.B:
Auf jeden Fall ist die Namenskonvention entweder zu persönlich oder wird durch allgemeine Regeln auferlegt. In jedem Fall sollte es irgendwo dokumentiert werden, damit alle Projektentwickler leicht darauf zugreifen können.
quelle
Ich glaube, dass es Namenskonventionen gibt, um den Entwicklercodierungsaufwand zu vereinfachen und die Verwaltbarkeit zu verbessern. Nach meinem Verständnis sollte jeder Name befolgt werden, der für den einfachen Zugriff hilfreich ist.
Ich habe eine Reihe von Kommentaren mit unterschiedlichem Ansatz gesehen, aber das Beste, was ich in meinen Projekten gefunden habe, ist, den ersten drei Namen der Steuerung vorangestellt zu haben. Es gibt viele Gründe, diesem Ansatz zu folgen.
Während des Codierens weiß ein Entwickler immer, dass er auf ein Textfeld oder eine Beschriftung zugreift. Wobei er nicht klar ist, mit welchem Namen der andere Entwickler verwendet hat. Wenn Sie also nur "lbl" Intellisens schreiben, wird die gesamte Beschriftungsliste zur Auswahl gebracht. Wenn Sie den in # 5 verwendeten Ansatz verwendet haben, bringt Intellisense alle Steuerelemente mit acc. Ich habe selten gesehen, dass eine Schleife mit einem Kontrollnamen mit "Konto" oder so begann. Dies bedeutet, dass es in keinem seltenen Fall helfen würde.
Meine Wette ist es, Dinge zu tun, die anderen Entwicklern helfen, Code leicht zu verstehen. Denn wenn Sie in Ihrem Träger aufwachsen, würden Sie nicht immer codieren, sondern eine andere Person würde Ihren Platz einnehmen.
Sie haben die Wahl, wie Sie wollen!
quelle
Wenn es in einem Anwendungsdesign eine gute Trennung der Bedenken gibt, müssen die Schaltflächen vermutlich nicht als LoginButton, LoginBtn oder btnLogin bezeichnet werden. Wenn der Eigentümer des Objekts ein UI-Element ist, nennen wir es Login. Wenn der Eigentümer kein UI-Element ist, befindet sich das Objekt an einer falschen Stelle.
quelle