Wie Formatiert ihr eure C#-Codes [Diskussion]?

Hallo liebe Community. Vor kurzem hat mich ein Kollege darauf angesprochen, dass ich meinen C# Code sehr seltsam formatiere.
Ich empfinde meinen Stil als sehr angenehm bei der Visual Studio IDE und ist meiner Meinung nach auch viel übersichtlicher als viele andere Codes.

(beispiel an einer öffentlichen Klasse)
C#:
namespace CodeFormat
{
    /// <summary>
    /// Ich zeige euch eine Klasse, wie ich sie formatieren würde.
    /// </summary>
    public class FormattedClassCode
    {
        /* Wenn ich eine Region nicht brauche, weil entsprechendes in meinem Code nicht vorkommt,
            lasse ich diese der Übersicht halber weg. */

        #region Static // Hier werden die Static-Komponenten geschrieben.
            #region Fields // Hier kommen meine privaten und geschützten statischen Felder rein.
            #region Constructors // Hier kommt der statische Konstruktor rein.
            #region Methods // Hier kommen die statischen Methoden rein.
            #region Properties // Hier kommen die statischen Eigenschaften rein.
            #region Events // Hier kommen die statischen Events rein.
        #endregion
        
        #region Instance //Hier werden die Instanz-Komponenten geschrieben
            #region Fields // Hier kommen meine privaten und geschützten Felder rein.
            #region Constructors // Hier kommen meine Konstruktor rein.
            #region Methods // Hier kommen die Methoden rein.
            #region Properties // Hier kommen die Eigenschaften rein.
            #region Events // Hier kommen die Events rein.
        #endregion
        
        #region Private Objects // Hier werden private Klassen definiert, die nur die Klasse selbst nutzen soll/darf.
    }
}

Zudem arbeite ich grundsätzlich mit englischen Begriffen für Eigenschaften, Events, etc... Bei mir bekommt auch alles ein XML-Kommentar, außer Felder.

Was haltet ihr davon? Ist es oversized? Zu wenig? Wie formatiert ihr euren Code? Benutzt ihr Regionen und XML-Kommentare, und wenn ja: Wann?

Ich freue mich sehr über eine Diskussion zu diesem Thema.

Mfg
JustShinigami
 
Wir benutzen ReSharper, der sehr viele Kleinigkeiten übernimmt, wobei ich diesen sehr beschnitten habe bei mir, da er mM nach zuviel machen will, wie eine übereifrige Freundin.

Dazu NArrange, der die Prozeduren etc. gemäss Ihrer Zugangbarkeit ordnet und auch die Regionen so setzt.

Dazu noch ein Tool, dessen Namen mir entfallen ist, wo man per CTRL+D oder ALT+D gleich eine kleine Standard XML-Beschreibung einer Funktion machen kann, wobei das dann entsprechend angepasst wird.

Mit den drei Tools hat man sehr wenig mehr zu tun.
 
Nunja, also ich muss ehrlich sagen, ich bin kein Freund von Tools, zumindest nicht von Tools, die nicht von mir geschrieben worden sind :D
Jedoch bin ich neugierig, wie sieht deine Klasse dann am Ende aus? (Vielleicht eine kleine Beispielklasse)

Mfg
JustShinigami
 
Code:
        #region Methods

        #region Public Methods


        /// <summary>
        ///     Gets the INDROLE_ATTRIBUTESs using the specified filter expression
        /// </summary>
        /// <param name="filterExpression">The filter expression.</param>
        /// <returns>
        ///     The INDROLE_ATTRIBUTEs by the specified filter expression
        /// </returns>
        List<INDROLE_ATTRIBUTE> GetIndRoleAttributes(Expression<Func<INDROLE_ATTRIBUTE, bool>> filterExpression)
        {
            List<INDROLE_ATTRIBUTE> result = null;
            this.FacadeAction(ctx =>
                {
                    result =
                        (filterExpression != null
                             ? ctx.INDROLE_ATTRIBUTEs.Where(filterExpression)
                             : ctx.INDROLE_ATTRIBUTEs)
                            .ToList();

                    result.StartTracking();
                });
            return result;
        }
        }

Sowas wäre z.B. eine Methode in der Businessfassade, gerade die erste, welche Public ist.
 
Zuletzt bearbeitet:
Grundsätzlich kommentiere ich alle öffentlichen und privaten Methoden und Eigenschaften.
Felder wenn ichs als sinnvoll erachte.

Ansonsten setzte ich auch kleinere Kommentare innerhalb einer Methode, wenn dies eine wichtige oder kritische Stelle ist.

#regionen kommen bei mir grundsätzlich ans ende um das Gesamtbild nicht durcheinander zu bringen und bilden immer eine bestimmte Sachgruppe.

Ansonsten arbeite ich bei den Kommentaren viel mit <see ref>, <exception />, <paramref> und was es da sonst noch so gibt, allerdings so das es noch überschaubar bleibt.

Ansonsten Methoden und Eigenschaften fangen mit Großbuchstaben an, unabhängig ihreres Modifierers und Felder mit Kleinbuchstaben.

Und immerschön Exceptionsschmeißen, wenn mir Methodenparameter nicht passen (ist natürlich kommentiert damit entsprechende Stellen erst garnicht auf ideen kommen)
 
Klingt vernünftig, Spyke :)
Ich habe mir die XML Commentary Dokumentation noch nicht komplett angeschaut. Was bringt z.B. <see ref> und wie bzw. wann verwendet man sowas? Welche XML tags gibt es da noch? PS: Ich habe ya einen YT Kanal, auf dem ich C# für Anfänger zugänglich machen will, und da will ich auch das Thema "Konventionen" ansprechen, daher habe ich auch dieses Thema hier. Es interessiert mich einfach, wie andere ihren Code formatieren und warum sie das tun. Unter Umständen werde ich sogar Teile von anderen übernehmen, wenn es in meinen Augen viel sinnvoller ist, als meine Art.

Mfg
JustShinigami
 
<see cref> <paramref> und noch paar anderen sind mehr für die Hilfedateien da die du aus den XML's generieren kannst,
oder beim Reflector wenn du dort die Formatierte Anzeige der Kommentare aktiviert hast (ist std. mäßig aktiv).
Ansonsten fält mir noch spontan <para> ein, für mehrzeilige Kommentare. (Geht bei <summary>, <param>, <exception>, <remarks> aufjedenfall)

Ich glaube es müsste sogar <b>, <i> und so gehen, habs aber nicht ausprobiert.

<see ref> erstellt übrigens im Prinzip eine Art Link damit du zum entsprechenden Datensatz, methode etc. springen kannst (Hilfedatei und/oder Reflector, da sollte es aufjedenfall gehn)

nachtrag:
<code> für Code Beispiele im Kommentar gibts noch, fält mir noch spontan ein.

Edit: hrmpf sollte en Edit für oberen post sein ^^
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück