Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   .NET-Framework (managed code) (https://www.delphipraxis.net/79-net-framework-managed-code/)
-   -   C# Visual Studio - Automatische Formatierung (https://www.delphipraxis.net/186546-visual-studio-automatische-formatierung.html)

Neutral General 10. Sep 2015 09:33

Visual Studio - Automatische Formatierung
 
Hallo,

Vielleicht kennen sich ja hier ein paar Leute auch ganz gut mit dem Visual Studio aus:
Ich habevom Prinzip her sowas:

Code:
if (Bedingung1)
    Anweisung;
else
if (Bedingung2)
    Anweisung;
else
if (Bedingung3)
    Anweisung;
Und bei jeder besch*** Gelegenheit formatiert mir VS den Code so:

Code:
if (Bedingung1)
    Anweisung;
else
    if (Bedingung2)
       Anweisung;
    else
       if (Bedingung3)
          Anweisung;
Das geht mir sowas von auf die Nerven! Ich möchte meinen Code so wie oben formatiert haben!
Gibt es da eine Möglichkeit das Verhalten von VS entsprechend zu ändern oder in dem Fall auszustellen?
Ich wollte jetzt eigentlich nicht die komplette automatische Formatierung ausstellen. Die ist ja generell schon ganz praktisch... :?

Der schöne Günther 10. Sep 2015 09:52

AW: Visual Studio - Automatische Formatierung
 
Im Vergleich zum RAD Studio hat VS in Sachen Einrückungen schockierend wenig zu bieten. Aber auch im RAD Studio finde ich zu deiner else-Vorliebe nichts.

Ich persönlich hasse Autoformatierung, egal welche IDE

Phoenix 10. Sep 2015 09:54

AW: Visual Studio - Automatische Formatierung
 
Das ist korrekte Einrückung, denn jeder neue Block (also die Anweisungen die nach einem if kommen, und konsequenterweise dann auch die, die nach einem else kommen) werden eingerückt.

Du kannst nicht sagen Wasch mich, aber mach mich nicht nass. Neuer Block heisst immer Einrückung.

Du kannst das vermeiden, in dem Du Dich z.B. an die Microsoft Framework Design Guidelines hältst, insbesondere an den Punkt bracing:

Zitat:

Braces should never be considered optional. Even for single statement blocks, you should always use braces. This increases code readability and maintainability.
Quelle: http://blogs.msdn.com/b/brada/archiv...px#_Toc6325242

Gemäß den allgemein bei C# als Konsens angesehenen Guidelines wäre also folgendes richtig (und wird auch richtig formatiert):

Code:
if (Bedingung1)
{
    Anweisung;
}
else if (Bedingung2)
{
    Anweisung;
}
else if (Bedingung3)
{
    Anweisung;
}
Die Frage ist eigentlich eher, ob hier bei so vielen else-if's nicht ein Designproblem vorliegt. Wäre hier nicht möglicherweise ein Switch-Case besser angebracht?

Neutral General 10. Sep 2015 11:06

AW: Visual Studio - Automatische Formatierung
 
Ja ich weiß wie man es tun *sollte* :duck:
Ich bin nur bei einigen Ausnahmen einer anderen Meinung als die Guidelines und wollte gucken ob ich VS meine Meinung aufzwingen kann :mrgreen:

Nagut dann muss ich mich wohl den Guidelines beugen :stupid:

Die else-ifs sind aus einem Mini-Parser. Der Code besteht in Wirklichkeit aus 4 if-elses.

Code:
string filterd = "";
bool instring = false;
bool escape = false;
for (int j = 0; j < PageContent[i].Length; j++)
{
    if (PageContent[i][j] == '(' && !escape)
        instring = true;
    else
    if (PageContent[i][j] == ')' && !escape)
        instring = false;
    else
    if (PageContent[i][j] == '\\' && !escape)
    {
        escape = true;
        continue;
    }
    else
    if (instring)
        filterd += PageContent[i][j];

    if (escape)
        escape = false;
}
Ich könnte in dem Fall sicher auch ein switch-case benutzen aber meiner Meinung nach sprengt das die "if-Grenze" noch nicht und im switch wäre die escape-Bedingung der ersten 3 Abfragen etwas fuddeliger zu implementieren. Aber wenn du da einen optimalen/optimaleren Weg kennst, dann nur her damit (Mal abgesehen von der in dem Code noch nicht eingehaltenen {}-Klammerregel) ;)

Phoenix 10. Sep 2015 11:51

AW: Visual Studio - Automatische Formatierung
 
Also ich würde das vermutlich eher so schreiben:
Code:
string filtered = String.Empty;
bool escape = false;
bool instring = false;

foreach (char current in PageContent[i])
{
    if (escape && instring)
    {
        filtered += current;
    }
    else
    {
        escape = (current == '\\');
        if (escape)
            continue;

        if (current == '(')
            instring = true;
        else if (current == ')')
            instring = false;             
    }
}

Neutral General 10. Sep 2015 11:56

AW: Visual Studio - Automatische Formatierung
 
Sieht gut aus. Das foreach könnte ich noch einbauen.
Allerdings tut dein Code nicht das gleiche wie meiner:

Code:
if (escape && instring)
{
    filtered += current;
}
stimmt nicht. escape muss nicht true sein damit der char an filtered drangehangen wird.

Dejan Vu 28. Sep 2015 06:55

AW: Visual Studio - Automatische Formatierung
 
Ich würde das noch in eine eigene Routine auslagern ("ExtractString")


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz