17 Stimmen

Veraltete Codierungspraktiken

Wenn ich meinen Code schreibe, frage ich mich manchmal, ob ich die Dinge auf die beste Art und Weise mache oder einfach nur so, wie es immer gemacht wurde. Macht das, was ich tue, noch Sinn?

Zum Beispiel das Deklarieren aller Variablen am Anfang der Funktion. Wenn ich versuche, sie zweimal zu deklarieren oder unterhalb des Punktes, an dem ich sie beginne zu nutzen, wird mein IDE mich zur Designzeit darauf aufmerksam machen - also was ist das große Problem dabei? Es scheint sinnvoller zu sein, die Variablen direkt über dem Block zu deklarieren, in dem sie verwendet werden sollen.

Eine weitere Sache wäre die ungarische Notation. Ich hasse es, dass alle meine Variablen, die mit einem bestimmten Objekt zusammenhängen, in meinem Intellisense verstreut sind.

Mit modernen Fortschritten in Frameworks und IDEs gibt es einige Codierungspraktiken, die nicht mehr wirklich relevant sind, und andere, die möglicherweise einfach falsch sind?

24voto

Jon Skeet Punkte 1325502

Deklariere Variablen nicht oberhalb des Blocks, in dem sie verwendet werden - deklariere sie im engsten verfügbaren Bereich, am Punkt des ersten Gebrauchs, wenn das in deiner Sprache möglich ist.

Die Verwendung der ungarischen Notation hängt von den Konventionen für deine Sprache/Plattform ab. Es hängt auch davon ab, welche Variante des Ungarischen du verwendest - die vernünftige (die ich immer noch nicht mag) oder die Version, die nur die bereits verfügbaren Typinformationen wiederholt.

Etwas, auf das man achten sollte: Wenn man eine neue Sprache lernt, sollte man auch die Redewendungen dafür gleichzeitig übernehmen, insbesondere die Namenskonventionen. Dies hilft deinem Code, sich in die neue Sprache einzufügen, anstatt in deinen alten (wahrscheinlich nicht verwandten) Code. Ich finde auch, dass es mir hilft, auch im Einklang mit der neuen Sprache zu denken, anstatt dagegen anzukämpfen.

Aber ja, es lohnt sich auf jeden Fall, die Kodierungspraktiken regelmäßig zu überprüfen. Wenn du nicht weißt, warum etwas eine gute Idee ist, versuche eine Weile ohne es auszukommen...

18voto

Brian R. Bondy Punkte 325712

Schutz vor versehentlicher Zuweisung:

In einigen neueren Sprachen wie C# ist es nicht erforderlich, den lvalue auf der rechten Seite zu platzieren.

In C# wird das Folgende nicht kompilieren:

if (variable = 0)

Also ist es in C# nicht nötig, das Folgende zu tun:

if (0 == variable)

Diese Praxis ist in C/C++-Programmen sehr verbreitet, um versehentliche Zuweisungen zu vermeiden, die als Vergleiche gedacht waren.


Mehrere Rückgabepunkte:

Das Verbieten von mehreren Rückgabepunkten wurde hauptsächlich durchgesetzt, weil man nicht vergessen möchte, seine Variablen zu löschen.

Stattdessen brauchen Sie sich nur um RAII zu kümmern.

Haftungsausschluss: Es gibt immer noch gute Gründe, mehrere Rückgabepunkte zu minimieren, und manchmal ist es nützlich, nur einen zu haben.


Headerdateien

In den meisten modernen Sprachen trennen Sie Ihren Code nicht in Deklaration und Definition.


C++-Definitionen für mehrere Headerdatei-Imports

In C++ haben Sie oft Folgendes getan:

#ifdef _MYFILE_H_
#define _MYFILE_H_

//code here

#endif

Manchmal würde dies jedoch zu etwas wie folgendem führen:

#ifdef _MYFILE_H_
#define _WRONGNAME_H_

//code here

#endif

Ein besserer Weg, dies zu tun, sofern Ihr Compiler dies unterstützt:

#pragma once

C-Variablendeklarationen

Mit C mussten Sie alle Variablen am Anfang Ihres Codeblocks deklarieren. Auch spätere Versionen von C erforderten dies nicht, aber die Leute machen es immer noch.


Ungarische Notation: (Lesen, enthält einige einzigartige Informationen)

Ungarische Notation kann immer noch gut sein. Aber ich meine nicht diese Art von ungarischer Notation.

Zuvor war es in C sehr wichtig, Dinge wie:

int iX = 5;
char szX[1024];
strcpy(szX, "5");

haben, da Sie vollständig typunsichere Funktionen haben könnten wie:

printf("%i", iX);

Wenn ich die Zeichenfolge x genannt hätte, wäre mein Programm abgestürzt.

Natürlich ist die Lösung, nur typsichere Funktionen zu verwenden. Also solange Sie das tun, brauchen Sie in diesem Sinne keine ungarische Notation.

Aber es ist trotzdem eine gute Idee, wie von Joel in seinem Sinn diskutiert.

13voto

Neil N Punkte 24394

Früher habe ich alle meine Zeilennummern um 10 getrennt, wobei ich jedes logisch getrennte Code-Stück in Intervallen von 100 oder 1000 gestartet habe. z.B.

10 Print "Hallo"
20 Gosub 100
30 'Peeks und Pokes

Aus offensichtlichen Gründen programmiere ich nicht mehr auf diese Weise.

8voto

Kurze Bezeichner: Viele altmodische Programmierer verwenden kurze, kryptische Bezeichner. Kürze ist eine nützliche Tugend, aber bedenken Sie, dass ein gutes Entwicklungsumgebung Autovervollständigung hat, ein beschreibender Name ist weit besser als etwas, das leicht zu tippen ist.

7voto

Kurze Zeilen: Einige Leute bestehen auf 80-Spalten-Text. Der Rest von uns hat echte Monitore und es macht uns nichts aus, wenn eine Zeile länger als 80 Zeichen ist. Es kann die Lesbarkeit verbessern, längere Zeilen zu haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X