Single-entry/single-exit-Regel

Habe ich gelesen, die in der Regel irgendwo:

Folgen Sie den single-entry/single-exit-Regel. Schreiben Sie niemals mehrere return-Anweisungen in derselben Funktion.

Ist diese Aussage wahr? Wenn das so ist, könnten Sie bitte geben Sie mehr Details, warum sollten wir diese Regel befolgen?

  • "Ist das wahr?" Sowie Sie nicht haben, um ihm zu Folgen, die Sprache ist vollkommen glücklich, mit mehreren return Aussagen, und meiner Meinung nach, es ist in Ordnung, Sie zu benutzen. Das problem ist, wenn Sie haben eine Menge von returns in kompliziert verschachtelten Logik. Das kann schwierig sein, zu Folgen. Wenn die Funktion eine Menge returns, die Sie wahrscheinlich benötigen, zu überarbeiten. Sie könnten auch interessiert zu wissen, dass in Fortran-Funktionen können mehrere Einstiegspunkte sowie, und die Leute tun Sie verwenden.
  • Ich dachte immer, die Regel ist dumm, in der coding-Regeln
  • Es ist auch zu Bedenken, dass Ihre Funktionen kann die Ausfahrt über eine Ausnahme, wie gut, die Dinge komplizieren sich weiter, und es ist oft schwierig zu wissen, wo Sie kommen könnte.
  • Das klingt wie etwas, was ein C-Programmierer sagen könnte. In C++, vorzeitiger Ausstieg ist ein sehr nützliches idiom.
  • SESE nicht viel hinzuzufügen Wert in garbage Collection-Sprachen wie C# und Java, aber es ist eine gute übung für C und C++. Lecks oder Abstürze durch fehlende oder falsche clean-up-Logik ist ein sehr häufiger Fehler. Selbst wenn Sie makellos sind, sicherzustellen, dass jeder Ausgangspunkt in Ihren Funktionen reinigt richtig -, Wartungs-Programmierer sind viel eher zu Fehlern führen, wenn Sie fügen Sie eine zusätzliche Prüfung für die Bedingungen, die waren nicht zunächst erwartet, zeigte sich aber während der Prüfung. SESE sorgt dafür, dass es nur ein Stück code, pro-Funktion, die Griffe clean-up, und es gibt keinen Weg, um es zu umgehen.
  • Ich werde nur hinzufügen, dass ich nennen würde SESE, eine 'gute Praxis', in der Regel nicht. Wenn kann eine Funktion eine Ausnahme werfen, die Sie brauchen, um es zu fangen, so dass Sie Aufräumen können, bevor erneute auslösen oder beenden in der Regel. Wenn Sie brauchen, um rethrow die Ausnahme, können Sie feststellen, dass mehrere Punkte zu beenden, jedes mit seiner eigenen Kopie des clean-up-code ist die beste option.
  • Es ist eine Frage, die auf das Thema der SE-Software Engineering, mit sehr guten Antworten : Wo haben die Vorstellung von "eine Rückkehr nur" kommen?. (Ich lasse das hier, weil ich denke, es könnte helfen, Menschen auf der Suche nach Materialien zum Thema)
  • Es ist falsch. das Prinzip der "single-entry-single-exit-Unterprogramm" stammt aus einer Zeit, als die Menschen versuchten, zur Förderung der "strukturierten Programmierung". C++ als Sprache, strukturiert ist. Außer für longjmp() alle Funktionen haben einen einzigen Ausgang, unabhängig davon, wie viele return-Anweisungen sind dort, weil Sie alle zurück an den gleichen Ort (die Funktionen aufrufen-site). In den 1960er Jahren war das nicht unbedingt wahr in Programme. So wurde die Zuordnung von IEC61508 der Begriff "single-exit", um eine "Rückkehr" in C++ ist falsch!

Schreibe einen Kommentar