Frage

In Anbetracht der folgenden Idiome:

1)

variable = value1
if condition
  variable = value2

2)

variable = value2
if not condition
  variable = value1

3)

if condition
  variable = value2
else
  variable = value1

4)

if not condition
  variable = value1
else
  variable = value2

Welche bevorzugen Sie und warum?

Wir übernehmen die häufigste Ausführungspfad, dass der condition zu sein ist falsch.

Ich neige dazu zu verwenden 1) zu lernen, obwohl ich nicht ganz sicher bin, warum ich mag es mehr.

Hinweis: Die folgenden Beispiele können einfacher-und sein damit möglicherweise besser lesbar, aber nicht alle Sprachen bieten solche Syntax, und sie sind nicht geeignet für die variable Zuordnung erstreckt mehr als eine Anweisung in der Zukunft schließen <. / em>

variable = condition ? value2 : value1
...
variable = value2 if condition else value1
War es hilfreich?

Lösung

In der Theorie, ziehe ich # 3 als es zweimal Wert der Variablen zugewiesen vermeidet. In der realen Welt, obwohl ich eine der vier oben, dass mehr lesbar oder würde ausdrücken deutlicher meine Absicht wäre.

Andere Tipps

Ich ziehe Methode 3, weil es kürzer und eine logische Einheit ist. Es setzt den Wert nur einmal, kann es sich um als Block bewegt werden kann, und es ist nicht so fehleranfällig (die, esp passiert. In Verfahren 1, wenn Einstellung-to-Wert1 und Prüfen-und-gegebenenfalls-Einstellung-to-Wert2 werden durch andere Aussagen getrennt)

3) ist der deutlichste Ausdruck dessen, was Sie wollen passieren. Ich denke, alle andere etwas mehr Denken erfordern, um zu bestimmen, welcher Wert in den Variablen, um am Ende wird.

In der Praxis würde ich den ternären Operator (? :) wenn ich eine Sprache wurde mit, die sie unterstützt. Ich ziehe es in funktionellem oder deklarativen Stil über Imperativ zu schreiben, wann immer ich kann.

Ich neige dazu, # 1 viel selbst zu verwenden. if condition liest einfacher als if !condition, vor allem, wenn Sie acidentally das verpassen ‚!‘, atleast meiner Meinung nach atleast.

Die Codierung ich tue, ist in C #, aber ich neige immer noch deutlich von dem ternären Operator zu steuern, es sei denn, ich mit (meist) lokalen Variablen arbeite. Die Linien sind in der Regel lange sehr schnell in einem ternären Operator, wenn man tief in eine Struktur mit drei Schichten anrufen, die schnell die Lesbarkeit wieder abnimmt.

  

Hinweis: Die folgenden Beispiele sein können einfacher-und damit möglicherweise besser lesbar, aber nicht alle Sprachen bieten solche Syntax

Das ist kein Argument für sie nicht in Sprachen verwenden, die eine solche Syntax zur Verfügung stellen kann. Im übrigen, dass enthält alle aktuellen Mainstream-Sprachen nach meiner letzten Zählung.

  

, und sie sind nicht geeignet, die variable Zuordnung für die Erweiterung mehr als eine Anweisung in Zukunft einzubeziehen.

Das ist wahr. Allerdings ist es oft sicher, dass eine solche Verlängerung wird absolut nicht stattfinden, weil die condition immer eine von zwei möglichen Fälle ergeben wird.

In solchen Situationen werde ich immer den Ausdruck Variante über die Aussage Variante bevorzugen, weil es syntaktische Unordnung reduziert und verbessert die Ausdruckskraft. In anderen Situationen neige ich dazu, mit der switch Aussage bereits erwähnt zu gehen - wenn die Sprache diese Nutzung erlaubt. Wenn nicht, Fallback auf allgemeine if.

switch Anweisung funktioniert auch. Wenn es einfach und mehr als 2 oder 3 Optionen, das ist, was ich benutze.

In einer Situation, wo die Bedingung nicht passieren könnte. Ich würde mit 1 oder 2 Sonst ist ihre nur auf das, was ich will, den Code zu tun. (Dh. Ich stimme mit cruizer)

Ich neige dazu verwenden, wenn nicht ... Rückkehr.

Aber das ist, wenn Sie schauen, um eine Variable zurückzukehren. Erster disqualifiers aus dem Weg dazu neigt, zuerst, um es besser lesbar. Es hängt wirklich von dem Kontext der Aussage und auch die Sprache. Ein Fall Aussage könnte besser funktionieren, und die meiste Zeit lesbar sein, aber die Leistung leidet unter VB so eine Reihe von if / else-Anweisungen mehr Sinn in diesem speziellen Fall macht.

Methode 1 oder Methode 3 für mich. Methode 1 kann einen zusätzlichen Spielraum Eingang / Ausgang vermeiden, aber Methode 3 vermeidet eine zusätzliche Zuordnung. Ich würde dazu neigen, Methode 2 zu vermeiden, wie ich versuche, so einfach wie möglich Bedingungslogik zu halten (in diesem Fall das! Fremd ist, wie es als Methode 1 ohne es neu geschrieben werden) und aus dem gleichen Grunde gilt für Verfahren 4.

Es hängt davon ab, was die Bedingung ist, teste ich.

Wenn es ein Fehler-Flag Zustand ist, dann werde ich 1 verwenden) Setzen des Fehler-Flag, den Fehler zu fangen und dann, wenn die Bedingung ist, um den Fehler-Flag erfolgreich zu löschen. Auf diese Weise gibt es keine Chance, einen Fehler von fehlt.

Für alles andere würde ich verwenden 3)

Die NICHT-Logik fügt nur zu Verwirrung, wenn die Code-Lese - auch in meinem Kopf kann für eveyone sonst nicht sprechen: -)

Wenn die Variable einen natürlichen Standardwert hat, würde ich mit # 1 gehen. Wenn entweder Wert gleich ist (in) geeignet für eine Standard dann würde ich mit # 2 gehen.

Es hängt davon ab. Ich mag die ternären Operatoren, aber manchmal ist es klarer, wenn Sie eine ‚if‘ Anweisung verwenden. Welche der vier Alternativen, die Sie wählen, hängt vom Kontext ab, aber ich neige gehen je nachdem, was die Funktion des Code macht deutlicher, und das ändert sich von Situation zu Situation.

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