Nicht erreichbarer Code: Fehler oder Warnung?
Dies ist eine Sprache, die design-Frage:
Denkst du unreachable code (in Programmiersprachen allgemein) erhöhen sollten eine Warnung (d.h. "report problem und kompilieren sowieso") oder eine Fehler ("verweigern zu kompilieren")?
Persönlich ich stark der Meinung, es sollte ein Fehler: wenn der Programmierer schreibt ein Stück code, es sollte immer mit der Absicht, tatsächlich läuft es in einige Szenario. Aber der C# - compiler zum Beispiel scheint mit dieser Meinung sind und nur meldet eine Warnung.
Anmerkung: ich merke mir gut die dead code detection ist ein sehr schwieriges problem, aber das ist nicht Thema dieser Frage.
Hier sind einige Beispiele von code-Stücken, wo einige Aussagen sind eindeutig nicht erreichbar:
return;
foo();
--
throw new Exception();
foo();
--
if (...) {
return;
} else {
throw new Exception();
}
foo();
InformationsquelleAutor der Frage Martijn | 2010-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Generell sollte es ein Fehler sein.
Einer Ausnahme in den Sinn kommt, aber:
Einige Entwickler könnten sich beschweren, wenn Ihr compiler verweigert die Kompilierung für code wie.
InformationsquelleAutor der Antwort Joachim Sauer
Ein Fehler bedeutet, dass der compiler ist körperlich nicht in der Lage, sich mit Ihrem code.
Eine Warnung bedeutet, dass der compiler in der Lage ist sich mit Ihrem code, aber Sie glauben, dass das, was Sie geschrieben haben, ist falsch in irgendeiner Art und Weise.
Scheint es ziemlich klar, um mich - es sollte eine Warnung sein.
Neben dem, was der Fall ist, wo ich beschlossen habe zu verkürzen, eine Methode, die für debugging-Zwecke:
Ich weiß, dass das falsch ist, aber für den compiler zu Fragen, die mir auch den Kommentar aus, der code wäre nur ein Schmerz.
InformationsquelleAutor der Antwort Justin
Ist es sehr Häufig zum erstellen von dead code absichtlich beim Debuggen - ein compiler, der verhindert, dass dies unwahrscheinlich ist beliebt bei seinen Nutzern.
InformationsquelleAutor der Antwort
Denke ich, dass eine Warnung angebracht ist. Dann kann der Benutzer entscheiden, Ihre ANDEREN Schalter, der sagt: "behandeln Sie alle Warnungen als Fehler", wenn er nicht eine Version bauen. Empowerment der Entwickler ist immer besser als zwingen Ihre im wesentlichen zufällige Entscheidungen auf ihn zu.
InformationsquelleAutor der Antwort No Refunds No Returns
Ich denke, es sollte eine Warnung sein.
Generell die Allgemeine Regel ist, dass "sollten Sie Warnungen als Fehler behandeln'. Wenn ich unabsichtlich schreiben unreachable code, ich werde es sehen in den Warnungen, und befestigen Sie es sowieso.
Aber manchmal, so wie Neil sagt, Sie absichtlich erstellen, dead code, für debugging-Zwecke oder welchem Grund auch immer. Ich würde wirklich, wirklich hasse es, wenn der compiler würde nicht lassen Sie mich das machen.
InformationsquelleAutor der Antwort Razzie
Wenn Sie die Sprache specifiction:
... dann wird es wirklich zu saugen. Es ist zwingend notwendig, um in der Lage sein zu deaktivieren, die große Blöcke von code, ohne zu schneiden Sie Sie aus der Datei physisch.
InformationsquelleAutor der Antwort unwind
Ich würde viel lieber (nachweislich) nicht erreichbar-code zu produzieren, entweder eine Warnung oder eine Mitteilung (wie eine Warnung, nur ohne negativen Beigeschmack). Vor allem, weil das macht die automatische code-Generierung etwas einfacher.
InformationsquelleAutor der Antwort Vatine
Einen guten Grund hatte, dass code während der Entwicklungsphase: Sie wollen vorübergehend deaktivieren Sie bestimmte Codes, aber Sie wollen immer noch dieser code überprüft werden syntax.
Beispiel:
Wenn du die Liste "Ergebnis = i*2+j+3+ij;" nur in / Kommentare */, Sie sind ziemlich sicher, dass, wenn Sie entfernen oder umbenennen bestimmter Variablen (z.B. ich), Sie nicht erhalten eine Fehlermeldung.
InformationsquelleAutor der Antwort Roalt
Sollte es eine Warnung sein, die standardmäßig mit einem compiler flag, der es ermöglicht, werden als Fehler behandelt.
Erfordern es unveränderlich eine oder andere ist rücksichtslos.
InformationsquelleAutor der Antwort plinth
Ich denke, es sollte eine Warnung, wegen dem gleichen Grund wie Roalt sagte. Ein guter compiler sollte auch ausschließen, dieser code wird kompiliert.
InformationsquelleAutor der Antwort eWolf
Ich eines immer noch nicht klar, warum Java ist die Umsetzung der dead code als Fehler. Ich verwende C und Objective-C, die Präprozessoren, somit kann ich problemlos verwenden, Präprozessor-Direktiven zu aktivieren (oder eine Maske), eine Funktion/Methode, wie:
oder, wie in Objective-C, mit Reflexion zur Verfügung:
InformationsquelleAutor der Antwort Maxthon Chan
Die Antwort ist, dass die endgültige Entscheidung, ob unreachable code löst einen Fehler oder eine Warnung sein sollte, bleibt in der Hand des Entwicklers. Sollte der compiler ermöglichen.
Im Falle von Produktions-release-code der balance bevorzugt, dass es ein Fehler ist. Keine Produktions-Programm enthalten sollte, kann durch die unreachable code.
Im Falle von debugging/testen von code der balance bevorzugt, dass es eine Warnung. Es ist extrem bequem deaktivieren können Teile des Codes, der für das Debuggen oder zu testen.
Den oben beziehen sich nur auf die von hand erstellte code. Im Fall von code, der erzeugt wurde, um ein automatisiertes tool, das Gleichgewicht Versprechen es wird eine Warnung oder ignoriert. Die Generierung von code mit nicht-erreichbar-Anteile hat keine Besondere negative Folgen und kann extrem schwer zu vermeiden.
InformationsquelleAutor der Antwort david.pfx