ist dieser Overkill für die Beurteilung von Main (string [] args)

8

Ich habe Folgendes und habe mich gefragt, ob der erste Test übertrieben ist:

%Vor%

Mit anderen Worten, was ich frage ist, gibt es Möglichkeiten von args.Length ist Null, oder Args sind null .... oder würde nur eine dieser Bedingungen ausreichen?

    
whytheq 19.03.2012, 08:21
quelle

5 Antworten

15

Nun, Main ist so definiert, dass es niemals jemals mit einem null -Parameter aufgerufen wird. Wenn irgendwie einen Null-Parameter erhält, dann ist Ihre Umgebung so kaputt, dass alle Wetten aus sind, egal was Sie tun, also gibt es wirklich nichts, wenn Sie nach null suchen.

Wenn Sie dagegen auf Null prüfen, müssen Leser und Betreuer des Codes warum verstehen. Warum hat der ursprüngliche Programmierer solch einen nutzlosen Check gemacht? Wusste er etwas, was wir nicht wissen? Wir können es nicht einfach entfernen, weil er vielleicht einen seltsamen Bug gefunden hat!

Mit anderen Worten: Sie erhöhen die Komplexität Ihres Programms und stupsen zukünftige Leser des Codes auf. Tu das nicht. Dieser zukünftige Benutzer könnte du sein. Mach dein zukünftiges Selbst glücklich und schreibe Code, der Sinn macht .

In Situationen, in denen ein solcher Null-Check sinnvoll ist , muss dies jedoch die Bedingung ganz links sein.

In einem Test wie diesem: args.Length == 0 || args == null , args.Length wird zuerst ausgewertet, und wenn das fehlschlägt, wird args mit null verglichen. Mit anderen Worten, wenn args null ist, wird Ihr Code eine Ausnahme auslösen. Es sollte args == null || args.Length == 0

sein     
jalf 19.03.2012, 08:30
quelle
11

Nach diesem müssen Sie nur Folgendes überprüfen:

%Vor%

Obwohl die Überprüfung auf null keinen Schaden verursacht, gibt es keinen wirklichen Bedarf.

    
ApprenticeHacker 19.03.2012 08:25
quelle
3

Es ist nie eine schlechte Idee, zusätzliche Kontrolle zu haben, wenn dies nicht in den sehr häufig verwendeten Hochleistungsfunktionen liegt. Also würde ich sagen, nicht, es ist nicht übertrieben.

Und noch etwas: zuerst nach null suchen, danach nach Length

    
Tigran 19.03.2012 08:23
quelle
3

Wenn keine Eingabedaten vorhanden sind, ist args.Length gleich 0, aber nicht null. Wenn Eingabedaten vorhanden sind, entspricht agrs.Length der Anzahl der Eingabeargumente. Abschließend kann args nicht null sein, aber die Länge kann Null sein.

PS zuerst immer auf Null prüfen

    
Rinat 19.03.2012 08:31
quelle
0
%Vor%     
Dor Cohen 19.03.2012 08:25
quelle

Tags und Links