LernMoment / community-fragen

C# Fragen aus der LernMoment Community zum lernen und üben in der LernMoment Community.
The Unlicense
2 stars 3 forks source link

Diskussion/Lösungsansatz zur Frage: WPF-3 Benennung von `Controls` in XAML #7

Open suchja opened 4 years ago

suchja commented 4 years ago

@suchja Hier mein bisher erarbeiteter Lösungsansatz zur Frage: WPF3.

Lösungsansatz

Sehr gute Beobachtung und lustiger Zufall! Gerade erst gestern habe ich nach einer Richtlinie dazu gesucht und danach meinen Quellcode überarbeitet.

Nein, es gibt nicht wirklich eine Richtlinie bezüglich der Benennung. Zumindest keine die Microsoft dazu veröffentlicht. Allerdings ist der Ansatz die Steuerelemente mit Kleinbuchstaben zu beginnen der "richtigere"! Letztlich steht ja jeder <Button .../> im XAML dafür, dass eine Instanz der Klasse Button im MainWindow als Attribut angelegt wird. Das kannst du erahnen, wenn du in VisualStudio im Projektmappen-Explorer das MainWindow soweit aufklappst, dass du Einträge wie Kasten_0_0 : Button siehst. Obwohl es auch für private Attribute, bzw. Felder wie es bei Microsoft heißt, keine klare Regel gibt, wird doch in den meisten Fällen mit einem Kleinbuchstaben begonnen. Vergleiche dazu diese Diskussion auf StackOverflow mit den entsprechenden Links zu Microsoft-Seiten.

Fazit: Ich starte mittlerweile auch die Namen mit kleinen Buchstaben. Das einzige was mich wirklich nervt ist, dass beim automatischen Erzeugen von EventHandlern dieser dann auch mit einem Kleinbuchstaben beginnt und ich muss das von Hand wieder beheben. Bestimmt wird die Codegenerierung von VisualStudio das aber bald beheben ;-).

Wo kommst du nicht weiter?

Das Thema Namensgebung und Schreibweise bzw. ganz allgemein Coding Convention ist sehr hitzig diskutiert bei Entwicklern. Es gibt dazu jedoch kein wirkliches richtig oder falsch. Daher gibt es auch nicht die eine richtige Lösung. Eine Antwort sollte immer im Kontext eines Projektes oder einer Firma gesehen werden.

Terppe commented 4 years ago

Hallo Jan, ich verwende ReSharper und dort wird vorgeschlagen

Gruß Rudi

suchja commented 4 years ago

@Terppe was schlägt ReSharper denn vor?

Terppe commented 4 years ago

Sorry <Button x:Name="kasten" ></Button> Name kasten does not match rule XAML field. Suggested Name is Kasten

<Button x:Name="kasten0_0" ></Button> Name kasteno_o does not match rule XAML field. Suggested Name is Kasten00

<Button x:Name="Kasten00" ></Button> Der doppelte Name "Kasten00" kann in diesem Bereich nicht registriert werden

<Button x:Name="Kasten10" ></Button> <Button x:Name="Kasten11" ></Button> ok

suchja commented 4 years ago

Hat ReSharper das aus deinem Code gelernt oder gibt es da eine Standard-Regel? In der Dokumentation von ReSharper konnte ich keine klare Aussage dazu finden.

Terppe commented 4 years ago

Ich habe keine Einstellungen vorgenommen. Standard ?

Terppe commented 4 years ago

Bei ReSharper gefunden

Code Inspection: Inconsistent Naming

tip

You can suppress this inspection to ignore specific issues, change its severity level to make the issues less or more noticeable, or disable it altogether.

This inspection notifies you about violations of symbol naming style whether you use the default set of naming rules or configure your preferences.

Out of the box, ReSharper provides a naming rule for each type of identifier. These rules are based on the Microsoft Naming Guidelines, .NET Foundation Coding Guidelines, and best practices. Note that there is no strict correspondence between ReSharper naming-rule defaults and any of the above mentioned guidelines.

If your personal preferences or company standards differ from ReSharper defaults, you can configure the naming style in a flexible way: for each type of identifier you can choose capitalization rules, prefixes and suffixes, variations for different access rights, abbreviations to preserve, and more.

Your naming style preferences are saved using the mechanism of layer-based settings. Among other things, this mechanism allows you to maintain different preferences for different solutions as well as to keep these preferences under a VCS and automatically share them with your team members.

Also alles einstellbar, aber will ich das ?

suchja commented 4 years ago

Gerade bei Namen gibt es wenig Regeln, viele Empfehlungen und wahrscheinlich mehr Meinungen als Entwickler. Letztlich geht es aber nur um Konsistenz. Daher ist es so, dass Firmen, Teams, Projekte, ... häufig ihre eigenen Regeln haben. Diese sind dann von allgemeinen Empfehlungen wie beispielsweise denen von Microsoft abgeleitet. Sofern du keine Vorgaben von anderen hast, brauchst du sicherlich nichts einstellen. Ansonsten bieten dir Werkzeuge wie ReSharper (oder auch Visual Studio) entsprechende Möglichkeiten.

Terppe commented 4 years ago

Ich werde die Basiseinstellungen von ReSharper für mich als Grundlage nehmen.

ghost commented 4 years ago

Ich sehe es ebenso, dass es grundsätzlich kein richtig oder falsch gibt.

Wesentlich ist meines Erachtens die Einheitlichkeit. Die kleinste sinnvolle Einheit dafür ist das jeweilige Projekt. Die Regeln dafür legt der Projektverantwortliche fest. Der könnte also auch festlegen, dass jeder "Button" mit "TriTraTrullala_" beginnen muss. Das ist unsinnig, aber wenn es einheitlich verwendet wird, erkenne ich "Button"-Objekte auf den ersten Blick. Die nächste Ebene für die Einheitlichkeit ist die Organisation. Hier legen die Verantwortlichen der Organisation die Regeln fest. Also der Geschäftsführer, Abteilungsleiter, IT-Chef, Entwicklungschef oder wer auch immer. Viel weiter wird es mit der Einheitlichkeit nicht gehen. Dann müssten die Konventionen schon vom Compiler geprüft und entsprechende Abweichungen als Fehler behandelt werden, damit deren Einhaltung auch sichergestellt wird.