Frage

Ich schätze die Möglichkeit, Regionen in Ihrem Code zu definieren, da sie die Lesbarkeit verbessert irrsinnig.

Wie auch immer, ich mag jeden haben mit der gleichen Konvention in allen Klassen (mit der vorgegebenen Reihenfolge aller Regionen) wie:

  • Privat Felder
  • Konstrukteurs
  • Klasseneigenschaften
  • Event-Handler
  • etc ...

Haben Sie eine Aussage haben, wie diese Aufteilung aussehen könnte (Was Regionen haben Sinn und welche Namen sie haben sollten) und in welcher Reihenfolge sie definiert werden?

War es hilfreich?

Lösung

Meine Konvention ist nicht, sie zu benutzen.

Wenn Sie Ihre Klasse finden zu groß immer so, dass man große Teile davon durch Regionen verstecken muß ich vorschlagen, Ihre Klasse zu komplex und soll auseinander gebrochen werden.

Andere Tipps

Jemand hat einmal gesagt, dass ein Abkommen wie das mit oben:

  
      
  • Privat Felder
  •   
  • Konstrukteurs
  •   
  • Klasseneigenschaften
  •   
  • Event-Handler
  •   
  • etc ...
  •   

ist wie eine Tabelle Einstellung, in der alle die Platten zusammen, die alle die Löffel zusammen sind, alle die Messer sind zusammen und alle die Gabeln sind zusammen.

Mein Nehmen auf dem #region Problem ist verwandte Methoden, Ereignisdefinitionen zu setzen und Eigenschaften zusammen in einer Region. Allerdings würde ein Code dies überhaupt zu tun hat Geruch zeigen (entweder Ihre Klasse ist zu groß oder tut zu viele Dinge), aber dies ist ein guter erster Schritt hinein in eine bessere Klasse Refactoring.

Immer wenn ich Regionen sehe ich denke, dass der Code entweder erzeugt oder in der Notwendigkeit Refactoring.

Vermeiden Sie sie verwenden und wenn Sie die Notwendigkeit, dass sie das Gefühl, erneut zu prüfen, was Sie tun, und versuchen Sie Ihre Klasse in denen kleinere aufzuteilen. Letztlich Dies wird helfen, mit der Lesbarkeit der Anwendung mehr als Regionen verwenden wird.

Persönlich würde ich nicht machen Codebereiche Teil der Codes Konvention empfehlen. Der Hauptgrund ist, dass Regionen verbergen Code , was zu Problemen führen könnte möglicherweise wie:

  • Entwickler könnten einige wichtige verpassen Teil des Quellcodes
  • Die durchschnittliche Menge des LOC in der gleichen Datei einer Tendenz zur Zunahme

Wenn Sie bei der Durchsetzung einer Codierung Stil Konvention in Ihrem Team interessiert sind, haben einen Blick auf Microsoft StyleCop . Beachten Sie, dass das Tool derzeit nur für C # funktioniert.

#region Lotsa boring code and lookup tables

Ich benutze es Bildschirm Immobilien zu sparen, sonst nichts:)

Ich verwende die folgenden Regionen:

Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events

Der Grund ist wegen der besseren Organisation des Codes.
Ich arbeitet mit Dateien, die 2000 Zeilen Code haben über können, und es ist sehr schwierig, den Code ohne Regionen aufrecht zu erhalten.

Ich denke, es gibt keine Notwendigkeit, in den Regionen. Sie sind nicht lesbar. Wenn Sie (denken, tun Sie wirklich brauchen?) Eine Menge Code in Ihrer Klasse, können Sie ‚teilweise‘ Klasse, um die Klasse Logikeinheiten aufzuteilen.

Denken Sie an sie als eine andere Form von Kommentaren: zusätzliche Informationen vermischt sich mit Ihrem Code, der hat keine formale Prüfung auf sie durchgeführt . Daher wird es wahrscheinlich mit dem Code Datum driftet aus.

duplizieren So NIE in den Kommentaren oder Region Richtlinien, dass die bereits im Code angegeben wird.

Nur zusätzliche Informationen hinzuzufügen.

Insbesondere Regionen mit der Tatsache, neu zu formulieren, dass bestimmte Mitglieder sind Eigenschaften, Ereignisse usw. ist völlig sinnlos. Das häufigste Problem ist, dass Sie eine Region für „private Methoden“ erstellen und dann Sie bearbeiten eine von ihnen es öffentlich zu machen. Nun müssen Sie es bewegen, was bedeutet, dass in einem diff mit der alten Version, die einfache Änderung viel schwieriger zu erkennen ist.

Sie können in diesem interessiert sein do you say nicht zu c # Regionen .

ich denke, dass so lange, wie Sie sind konsequent accross Ihr Projekt spielt es keine Rolle zu viel, die Sie schreiben, um sie in. Auch sehr, sehr vorsichtig sein, um sie von überbeanspruchend (daher den anfänglichen Link!).

Es gibt nichts Schlimmeres als eine geschlossene Konstruktor Region zu finden, die nur eine Zeile Code versteckt ist.

ich glaube, am Ende ist es nach persönlichem Geschmack nach unten. Wie ich gesagt habe, ist die Konsistenz der Schlüssel!

ich meinen eigenen Region Code-Schnipsel schrieb für VS 2008, die ich immer wie folgt:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
    <Header>
        <Title>#class region</Title>
        <Shortcut>#classregion</Shortcut>
        <Description>Code snippet for #region in classes</Description>
        <Author>Simon Linder</Author>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>name</ID>
                <ToolTip>Region name</ToolTip>
                <Default>MyRegion</Default>
            </Literal>
        </Declarations>
        <Code Language="csharp">
            <![CDATA[#region Variables
                    $selected$ $end$
                #endregion

            #region Construction/Destruction
                    $selected$ $end$
                #endregion

            #region Properties
                    $selected$ $end$
                #endregion

            #region Public Methods 
                    $selected$ $end$
                #endregion

            #region Private/Proteced Methods
                    $selected$ $end$
                #endregion]]>
        </Code>
    </Snippet>
</CodeSnippet>

Wie man sehen kann ich verwenden Regionen für Variables, Construction/Destruction, Properties, Public und Private Methoden tun. Ich füge oft einen anderen Teilbereich in den privaten Bereich genannt events. Die Reihenfolge der Regionen funktioniert auch mit StyleCop .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top