Frage

Sollten Entwickler die Verwendung vermeiden? weitermachen in C# oder seinem Äquivalent in anderen Sprachen, um die nächste Iteration einer Schleife zu erzwingen?Würden sich Argumente dafür oder dagegen mit Argumenten darüber überschneiden? Gehe zu?

War es hilfreich?

Lösung

ich denke, es sollte mehr Gebrauch von weiterhin sein!

Zu oft ich über Code kommen wie:

for (...)
{
   if (!cond1)
   {
      if (!cond2)
      {
          ... highly indented lines ...
      }
   }
}

statt

for (...)
{
   if (cond1 || cond2)
   {
      continue;
   }

   ...
}

Verwenden Sie es den Code besser lesbar!

zu machen

Andere Tipps

Ist continue mehr schädlich als, sagen wir, break

Wenn überhaupt, in den meisten Fällen, in denen ich es begegnen / verwenden, finde ich, macht es Code klarer und weniger Spaghetti-like.

Sie können mit gutem Code schreiben oder ohne fortsetzen und Sie können mit schlechten Code schreiben oder ohne weiter.

Es gibt wahrscheinlich einige Überschneidungen mit Argumenten über goto, aber so weit es mich betrifft die Verwendung ist weiterhin gleichwertig break-Anweisungen zu verwenden (in Schleifen) oder Anweisung Rückkehr von jedem beliebigen Ort in einem Verfahren Körper - wenn richtig eingesetzt kann es Vereinfachung des Codes (weniger wahrscheinlich, Fehler zu enthalten, leichter zu pflegen).

Es gibt keine schädlichen Keywords. Es gibt nur schädlichen Gebrauch von ihnen.

Goto ist nicht schädlich per se weder weiter. Sie müssen sorgfältig verwendet werden, das ist alles.

Wenn weiterhin ein Problem mit Ablesbarkeit verursacht, dann sind die Chancen Sie andere Probleme haben. Beispielsweise massive Mengen von Code in einem for-Schleife. Wenn Sie Schleifen schreiben groß, würde ich versuchen, mit weiterhin nah an die Spitze der for-Schleife zu bleiben. Ansonsten geht tief in der Mitte eines for-Schleife begraben kann leicht übersehen werden.

Ich mag am Anfang der Schleifen verwenden, weiterhin für die Handhabung einfach, wenn Bedingungen.

Für mich ist es der Code besser lesbar macht, da es keine zusätzlichen Verschachtelung und man kann sehen, dass ich ausdrücklich mit diesen Fällen befasst haben.

Ist das der gleiche Grund, dass ich eine goto verwenden würde? Vielleicht. Ich sie manchmal zur besseren Lesbarkeit verwenden und die Verschachtelung des Codes zu stoppen, aber ich sie in der Regel mehr für die Handhabung Bereinigung / Fehler verwenden.

Ich würde sagen: "es kommt"

.

Wenn Sie einigermaßen kleine Schleife Code haben (wo Sie den ganzen Schleife-Code ohne Scrollen sehen) sein in der Regel in Ordnung, eine weiter zu verwenden.

Wenn jedoch die Schleifen Körper groß ist (zum Beispiel aufgrund eines großen Schalter), und es gibt einige Followup-Code (sagen unter dem Schalter), können Sie leicht Fehler einführen kann durch das Hinzufügen einer fortführen und somit über diesen Code Überspringen manchmal . Ich habe dies im Herzen eines Bytecode-Interpreter auf, wo einiger Instrumentationscode wurde manchmal nicht durch auszuführende eines weiterhin in einigen Fall-Filialen.

Dies könnte ein etwas künstlich konstruierten Fall sein, aber ich versuche, im Allgemeinen zu vermeiden fortsetzen und ein verwenden, wenn (aber nicht ist zu tief verschachtelt wie in dem Beispielcode Rob).

Ich glaube nicht, jemals so schwierig, wie ginge sein fortsetzen konnte, da nie aus dem Codeblock bewegt Ausführung weiterhin, dass es in.

Wenn Sie durch jede Art von einer Ergebnismenge iterieren, und das Ausführen von Operationen auf den Ergebnisse der zum Beispiel innerhalb eines für jeden, und wenn ein bestimmtes Ergebnis verursacht ein Problem, seine eher nützlich in einem erwarteten Fehler erfassen (über TRY fangen), Protokollierung es, und bewegen auf zum nächsten Ergebnis über fortzusetzen. Weiter ist besonders nützlich, imo, für die unbeaufsichtigte Dienste, die Arbeitsplätze an den ungeraden Stunden zu tun, und eine Ausnahme sollte nicht die anderen x Anzahl der Datensätze beeinflussen.

  1. Mit am Anfang einer Schleife weiterhin Iteration über unnötigen Elemente zu vermeiden, ist nicht schädlich und kann sehr nützlich sein, aber es in der Mitte des verschachtelten ifs und Elses kann drehen Sie den Loop-Code in ein komplexes Labyrinth mit, zu verstehen und zu validieren.

  2. Ich denke, seine Verwendung zu vermeiden ist auch das Ergebnis einer semantischen Mißverständnis. Menschen, die nie / Schreib sehen ‚continue‘ Schlüsselwort in ihrem Code, wenn ein Code zu sehen, mit weiterhin kann es als „die Fortsetzung des natürlichen Flusses“ interpretieren. Wenn statt weiter wir hatten Weiter , zum Beispiel, ich glaube, mehr Menschen würden schätzen diese wertvolle Cursor-Funktion.

goto kann als weiter verwendet werden, aber nicht umgekehrt.

Sie können "goto" überall, brechen somit Flusskontrolle willkürlich.

So weiter, bei weitem nicht so schädlich.

Andere haben es angedeutet ... aber weiter und brechen durch die Compiler erzwungen und haben ihre eigenen zugeordneten Regeln. Goto hat keine solche Einschränkungen, obwohl der Nettoeffekt Macht fast gleich sein, unter bestimmten Umständen.

Ich fahre fort oder brechen nicht denken Sie daran schädlich für sich zu sein, obwohl ich sicher bin, kann entweder schlecht in einer Weise verwendet werden, die jede vernünftige Programmierer Gag machen würde.

Ich würde sagen, ja. Für mich bricht es nur den ‚Flow‘ ein fluidtechnisch geschriebenes Stück Code.

Ein weiteres Argument könnte auch sein, dass, wenn Sie von den meisten modernen Sprachen unterstützten die grundlegenden Keywords bleiben, dann wird Ihr Programmablauf (wenn nicht die Logik oder Code) zu einer anderen Sprache portiert werden könnte. ein nicht unterstütztes Schlüsselwort (dh weiter oder goto) würde das brechen.

Es ist wirklich eher eine persönliche Präferenz, aber ich habe noch nie, es zu benutzen und nicht wirklich eine Option in Betracht ziehen, wenn ich neuen Code mich schreibe. (Die gleiche wie goto).

Was diese Programmierer betrifft, Verschachtelte if / else als schädlich.

Weiter ist eine wirklich nützliche Funktion in den meisten Sprachen, weil sie Codeblöcke können für bestimmte Bedingungen übersprungen werden.

Eine Alternative wäre, verwendet boolean Variablen in if-Anweisungen, aber diese müßten nach jedem Gebrauch zurückgesetzt werden.

weiter fühlt sich falsch an mir. Pause bekommt man von dort aus, aber weiterhin scheint nur Spaghetti zu sein.

Auf der anderen Seite können Sie mit Pause emulieren fortsetzen (zumindest in Java).

for (String str : strs) contLp: {
    ...
       continue contLp;
    ...
}

weiter unter bestimmten Umständen nützlich sein, aber es fühlt sich immer noch schmutzig zu mir.

for (char c : cs) {
    final int i;
    if ('0' <= c && c <= '9') {
        i = c - '0';
    } else if ('a' <= c && c <= 'z') {
        i = c - 'a' + 10;
    } else {
        continue;
    }
    ... use i ...
}

Ich glaube, in der unteren Zeile Argument gegen weiterhin ist, dass es es schwieriger zu beweisen, macht, dass der Code korrekt ist. Dies ist im mathematischen Sinne beweisen. Aber es ist wahrscheinlich nicht für Sie, weil niemand über die Ressourcen zu ‚beweisen‘, ein Computerprogramm, das wesentlich komplexer ist.

Geben Sie die statische Analyse-Tools. Sie können Dinge härter auf sie machen ...

Und das ginge zu, das klingt wie ein Alptraum aus den gleichen Gründen, aber an jeder beliebigen Stelle im Code.

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